diff --git a/src/Rtp/RtpProcess.cpp b/src/Rtp/RtpProcess.cpp index b0027f69..bc5f69ec 100644 --- a/src/Rtp/RtpProcess.cpp +++ b/src/Rtp/RtpProcess.cpp @@ -244,17 +244,24 @@ void RtpProcess::emitOnPublish() { if (!strong_self) { return; } - if (err.empty()) { - strong_self->_muxer = std::make_shared(strong_self->_media_info._vhost, - strong_self->_media_info._app, - strong_self->_media_info._streamid, 0.0f, - option); - strong_self->_muxer->setMediaListener(strong_self); - strong_self->doCachedFunc(); - InfoP(strong_self) << "允许RTP推流"; - } else { - WarnP(strong_self) << "禁止RTP推流:" << err; - } + auto poller = strong_self->_sock ? strong_self->_sock->getPoller() : EventPollerPool::Instance().getPoller(); + poller->async([weak_self, err, option]() { + auto strong_self = weak_self.lock(); + if (!strong_self) { + return; + } + if (err.empty()) { + strong_self->_muxer = std::make_shared(strong_self->_media_info._vhost, + strong_self->_media_info._app, + strong_self->_media_info._streamid,0.0f, + option); + strong_self->_muxer->setMediaListener(strong_self); + strong_self->doCachedFunc(); + InfoP(strong_self) << "允许RTP推流"; + } else { + WarnP(strong_self) << "禁止RTP推流:" << err; + } + }); }; //触发推流鉴权事件 diff --git a/srt/SrtTransportImp.cpp b/srt/SrtTransportImp.cpp index ca5c0082..36ac8b05 100644 --- a/srt/SrtTransportImp.cpp +++ b/srt/SrtTransportImp.cpp @@ -161,17 +161,24 @@ void SrtTransportImp::emitOnPublish() { if (!strong_self) { return; } - if (err.empty()) { - strong_self->_muxer = std::make_shared( - strong_self->_media_info._vhost, strong_self->_media_info._app, strong_self->_media_info._streamid, - 0.0f, option); - strong_self->_muxer->setMediaListener(strong_self); - strong_self->doCachedFunc(); - InfoP(strong_self) << "允许 srt 推流"; - } else { - WarnP(strong_self) << "禁止 srt 推流:" << err; - strong_self->onShutdown(SockException(Err_refused, err)); - } + strong_self->getPoller()->async([weak_self, err, option](){ + auto strong_self = weak_self.lock(); + if (!strong_self) { + return; + } + if (err.empty()) { + strong_self->_muxer = std::make_shared(strong_self->_media_info._vhost, + strong_self->_media_info._app, + strong_self->_media_info._streamid,0.0f, + option); + strong_self->_muxer->setMediaListener(strong_self); + strong_self->doCachedFunc(); + InfoP(strong_self) << "允许 srt 推流"; + } else { + WarnP(strong_self) << "禁止 srt 推流:" << err; + strong_self->onShutdown(SockException(Err_refused, err)); + } + }); }; // 触发推流鉴权事件