1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +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; return err;
} }
void SrsRtcSession::check_source() srs_error_t SrsRtcSession::check_source()
{ {
srs_error_t err = srs_success;
// TODO: FIXME: Check return error. // TODO: FIXME: Check return error.
if (source == NULL) { if (source == NULL) {
// TODO: FIXME: Should refactor it, directly use http server as handler. // TODO: FIXME: Should refactor it, directly use http server as handler.
ISrsSourceHandler* handler = _srs_hybrid->srs()->instance(); 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 SrsRtcSession::on_binding_request(SrsUdpMuxSocket* udp_mux_skt, SrsStunPacket* stun_req)
{ {
srs_error_t err = srs_success; 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); srs_verbose("pid=%u, blp=%d", pid, blp);
check_source(); if ((err = check_source()) != srs_success) {
return srs_error_wrap(err, "check");
}
if (! source) { if (! source) {
return srs_error_wrap(err, "can not found source"); return srs_error_wrap(err, "can not found source");
} }

View file

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