diff --git a/src/Rtmp/RtmpSession.cpp b/src/Rtmp/RtmpSession.cpp index 566fcad1..fea6f27d 100644 --- a/src/Rtmp/RtmpSession.cpp +++ b/src/Rtmp/RtmpSession.cpp @@ -219,10 +219,11 @@ void RtmpSession::onCmd_publish(AMFDecoder &dec) { } void RtmpSession::onCmd_deleteStream(AMFDecoder &dec) { + _push_src = nullptr; + //此时回复可能触发broken pipe事件,从而直接触发onError回调;所以需要先把_push_src置空,防止触发断流续推功能 sendStatus({ "level", "status", "code", "NetStream.Unpublish.Success", "description", "Stop publishing." }); - _push_src = nullptr; throw std::runtime_error(StrPrinter << "Stop publishing" << endl); } diff --git a/src/Rtsp/RtspSession.cpp b/src/Rtsp/RtspSession.cpp index f7093d63..125bcc2f 100644 --- a/src/Rtsp/RtspSession.cpp +++ b/src/Rtsp/RtspSession.cpp @@ -867,8 +867,9 @@ void RtspSession::handleReq_Pause(const Parser &parser) { } void RtspSession::handleReq_Teardown(const Parser &parser) { - sendRtspResponse("200 OK"); _push_src = nullptr; + //此时回复可能触发broken pipe事件,从而直接触发onError回调;所以需要先把_push_src置空,防止触发断流续推功能 + sendRtspResponse("200 OK"); throw SockException(Err_shutdown,"recv teardown request"); }