diff --git a/src/output/output_tssrt.cpp b/src/output/output_tssrt.cpp index 7b085f04..9a945287 100644 --- a/src/output/output_tssrt.cpp +++ b/src/output/output_tssrt.cpp @@ -113,7 +113,6 @@ namespace Mist{ myConn.setHost(srtConn.remotehost); if (!allowPush("")){ onFinish(); - srtConn.close(); return; } parseData = false; @@ -125,6 +124,12 @@ namespace Mist{ timeStampOffset = 0; } + bool OutTSSRT::onFinish(){ + myConn.close(); + srtConn.close(); + return false; + } + OutTSSRT::~OutTSSRT(){} static void addIntOpt(JSON::Value & pp, const std::string & param, const std::string & name, const std::string & help, size_t def = 0){ @@ -305,6 +310,7 @@ namespace Mist{ if (!recvSize){ if (!srtConn){ myConn.close(); + srtConn.close(); wantRequest = false; }else{ Util::sleep(50); @@ -318,6 +324,7 @@ namespace Mist{ if (!thisPacket){ INFO_MSG("Could not get TS packet"); myConn.close(); + srtConn.close(); wantRequest = false; return; } @@ -344,6 +351,13 @@ namespace Mist{ } } + bool OutTSSRT::dropPushTrack(uint32_t trackId, const std::string & dropReason){ + Util::logExitReason("track dropped by buffer"); + myConn.close(); + srtConn.close(); + return Output::dropPushTrack(trackId, dropReason); + } + void OutTSSRT::connStats(uint64_t now, Comms::Connections &statComm){ if (!srtConn){return;} statComm.setUp(srtConn.dataUp()); diff --git a/src/output/output_tssrt.h b/src/output/output_tssrt.h index 71c9b72f..bfcee95f 100644 --- a/src/output/output_tssrt.h +++ b/src/output/output_tssrt.h @@ -14,11 +14,12 @@ namespace Mist{ void sendTS(const char *tsData, size_t len = 188); bool isReadyForPlay(){return true;} virtual void requestHandler(); + virtual bool onFinish(); protected: virtual void connStats(uint64_t now, Comms::Connections &statComm); virtual std::string getConnectedHost(){return srtConn.remotehost;} virtual std::string getConnectedBinHost(){return srtConn.getBinHost();} - + virtual bool dropPushTrack(uint32_t trackId, const std::string & dropReason); private: HTTP::URL target; int64_t timeStampOffset;