Fix HLS output not setting "responded" value appropriately

This commit is contained in:
Thulinma 2022-03-24 15:20:52 +01:00
parent c10d5a7ec1
commit f418fed81c

View file

@ -232,6 +232,7 @@ namespace Mist{
H.setCORSHeaders(); H.setCORSHeaders();
if (H.method == "OPTIONS" || H.method == "HEAD"){ if (H.method == "OPTIONS" || H.method == "HEAD"){
H.SendResponse("200", "OK", myConn); H.SendResponse("200", "OK", myConn);
responded = true;
return; return;
} }
H.SetBody("<?xml version=\"1.0\"?><!DOCTYPE cross-domain-policy SYSTEM " H.SetBody("<?xml version=\"1.0\"?><!DOCTYPE cross-domain-policy SYSTEM "
@ -239,6 +240,7 @@ namespace Mist{
"cross-domain-policy.dtd\"><cross-domain-policy><allow-access-from domain=\"*\" " "cross-domain-policy.dtd\"><cross-domain-policy><allow-access-from domain=\"*\" "
"/><site-control permitted-cross-domain-policies=\"all\"/></cross-domain-policy>"); "/><site-control permitted-cross-domain-policies=\"all\"/></cross-domain-policy>");
H.SendResponse("200", "OK", myConn); H.SendResponse("200", "OK", myConn);
responded = true;
return; return;
}// crossdomain.xml }// crossdomain.xml
@ -262,6 +264,7 @@ namespace Mist{
} }
H.SetBody(""); H.SetBody("");
H.SendResponse("200", "OK", myConn); H.SendResponse("200", "OK", myConn);
responded = true;
return; return;
} }
@ -311,6 +314,7 @@ namespace Mist{
targetTime = HLS::getPartTargetTime(M, idx, mTrack, startTime, msn, part); targetTime = HLS::getPartTargetTime(M, idx, mTrack, startTime, msn, part);
if (!targetTime){ if (!targetTime){
H.SendResponse("404", "Partial fragment does not exist", myConn); H.SendResponse("404", "Partial fragment does not exist", myConn);
responded = true;
return; return;
} }
startTime += part * HLS::partDurationMaxMs; startTime += part * HLS::partDurationMaxMs;
@ -372,6 +376,7 @@ namespace Mist{
"served.\n"); "served.\n");
myConn.SendNow(H.BuildResponse("404", "Fragment out of range")); myConn.SendNow(H.BuildResponse("404", "Fragment out of range"));
WARN_MSG("Fragment @ %" PRIu64 " too old", startTime); WARN_MSG("Fragment @ %" PRIu64 " too old", startTime);
responded = true;
return; return;
} }
@ -389,10 +394,12 @@ namespace Mist{
} }
if (H.method == "OPTIONS" || H.method == "HEAD"){ if (H.method == "OPTIONS" || H.method == "HEAD"){
H.SendResponse("200", "OK", myConn); H.SendResponse("200", "OK", myConn);
responded = true;
return; return;
} }
H.StartResponse(H, myConn, VLCworkaround || config->getBool("nonchunked")); H.StartResponse(H, myConn, VLCworkaround || config->getBool("nonchunked"));
responded = true;
// we assume whole fragments - but timestamps may be altered at will // we assume whole fragments - but timestamps may be altered at will
contPAT = fragmentIndex; // PAT continuity counter contPAT = fragmentIndex; // PAT continuity counter
contPMT = fragmentIndex; // PMT continuity counter contPMT = fragmentIndex; // PMT continuity counter
@ -419,6 +426,7 @@ namespace Mist{
// Strip /hls/<streamname>/ from url // Strip /hls/<streamname>/ from url
std::string url = H.url.substr(H.url.find('/', 5) + 1); std::string url = H.url.substr(H.url.find('/', 5) + 1);
sendHlsManifest(url); sendHlsManifest(url);
responded = true;
} }
} }