1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-13 20:01:56 +00:00

For #1638, #307, should check error by fetch_or_create source

This commit is contained in:
winlin 2020-03-17 18:24:28 +08:00
parent ed2996141c
commit 0ff8a3761b
2 changed files with 13 additions and 5 deletions

View file

@ -767,16 +767,22 @@ srs_error_t SrsRtcSession::on_stun(SrsUdpMuxSocket* udp_mux_skt, SrsStunPacket*
return err;
}
void SrsRtcSession::check_source()
srs_error_t SrsRtcSession::check_source()
{
srs_error_t err = srs_success;
// TODO: FIXME: Check return error.
if (source == NULL) {
// TODO: FIXME: Should refactor it, directly use http server as handler.
ISrsSourceHandler* handler = _srs_hybrid->srs()->instance();
_srs_sources->fetch_or_create(&request, handler, &source);
if ((err = _srs_sources->fetch_or_create(&request, handler, &source)) != srs_success) {
return srs_error_wrap(err, "create source");
}
}
return err;
}
srs_error_t SrsRtcSession::on_binding_request(SrsUdpMuxSocket* udp_mux_skt, SrsStunPacket* stun_req)
{
srs_error_t err = srs_success;
@ -864,7 +870,9 @@ srs_error_t SrsRtcSession::on_rtcp_feedback(char* buf, int nb_buf, SrsUdpMuxSock
srs_verbose("pid=%u, blp=%d", pid, blp);
check_source();
if ((err = check_source()) != srs_success) {
return srs_error_wrap(err, "check");
}
if (! source) {
return srs_error_wrap(err, "can not found source");
}

View file

@ -230,7 +230,7 @@ public:
public:
bool is_stun_timeout() { return last_stun_time + kSrsRtcSessionStunTimeoutUs < srs_get_system_time(); }
private:
void check_source();
srs_error_t check_source();
private:
srs_error_t on_binding_request(SrsUdpMuxSocket* udp_mux_skt, SrsStunPacket* stun_req);
private: