diff --git a/src/output/output_hls.cpp b/src/output/output_hls.cpp index 3cc90450..8ba7c76a 100644 --- a/src/output/output_hls.cpp +++ b/src/output/output_hls.cpp @@ -342,4 +342,19 @@ namespace Mist { void OutHLS::sendTS(const char * tsData, unsigned int len){ H.Chunkify(tsData, len, myConn); } + + void OutHLS::onFail(const std::string & msg, bool critical){ + if (H.url.find(".m3u") == std::string::npos){ + HTTPOutput::onFail(msg, critical); + return; + } + H.Clean(); //make sure no parts of old requests are left in any buffers + H.SetHeader("Server", "MistServer/" PACKAGE_VERSION); + H.setCORSHeaders(); + H.SetHeader("Content-Type", "application/vnd.apple.mpegurl"); + H.SetHeader("Cache-Control", "no-cache"); + H.SetBody("#EXTM3U\r\n#EXT-X-ERROR: "+msg+"\r\n#EXT-X-ENDLIST\r\n"); + H.SendResponse("200", "OK", myConn); + Output::onFail(msg, critical); + } } diff --git a/src/output/output_hls.h b/src/output/output_hls.h index 739b89b1..ef7e4756 100644 --- a/src/output/output_hls.h +++ b/src/output/output_hls.h @@ -11,6 +11,7 @@ namespace Mist { void sendNext(); void onHTTP(); bool isReadyForPlay(); + virtual void onFail(const std::string & msg, bool critical = false); protected: std::string h264init(const std::string & initData);