From 09d4bb6318a639b3892044bc6266779d850325bb Mon Sep 17 00:00:00 2001 From: Thulinma Date: Fri, 19 Apr 2019 14:14:17 +0200 Subject: [PATCH] Added improved HLS output error handling --- src/output/output_hls.cpp | 15 +++++++++++++++ src/output/output_hls.h | 1 + 2 files changed, 16 insertions(+) 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);