diff --git a/src/output/output_dash_mp4.cpp b/src/output/output_dash_mp4.cpp index b2f92a8d..5b343935 100644 --- a/src/output/output_dash_mp4.cpp +++ b/src/output/output_dash_mp4.cpp @@ -536,26 +536,23 @@ namespace Mist { } void OutDashMP4::onHTTP(){ + std::string method = H.method; + initialize(); if (myMeta.live){ updateMeta(); } std::string url = H.url; - if (H.method == "OPTIONS"){ - H.Clean(); - H.SetHeader("Content-Type", "application/octet-stream"); - H.SetHeader("Cache-Control", "no-cache"); - H.setCORSHeaders(); - H.SetBody(""); - H.SendResponse("200", "OK", myConn); - H.Clean(); - return; - } if (url.find(".mpd") != std::string::npos){ H.Clean(); H.SetHeader("Content-Type", "application/xml"); H.SetHeader("Cache-Control", "no-cache"); H.setCORSHeaders(); + if(method == "OPTIONS" || method == "HEAD"){ + H.SendResponse("200", "OK", myConn); + H.Clean(); + return; + } H.SetBody(buildManifest()); H.SendResponse("200", "OK", myConn); DEVEL_MSG("Manifest sent"); @@ -569,6 +566,11 @@ namespace Mist { H.SetHeader("Content-Type", "video/mp4"); H.SetHeader("Cache-Control", "no-cache"); H.setCORSHeaders(); + if(method == "OPTIONS" || method == "HEAD"){ + H.SendResponse("200", "OK", myConn); + H.Clean(); + return; + } H.StartResponse(H, myConn); if (url.find("init.m4s") != std::string::npos){ diff --git a/src/output/output_http_internal.cpp b/src/output/output_http_internal.cpp index 521140bf..41087a7b 100644 --- a/src/output/output_http_internal.cpp +++ b/src/output/output_http_internal.cpp @@ -217,8 +217,15 @@ namespace Mist { if (H.GetVar("s").size() && H.GetVar("s") == SUPER_SECRET){ H.Clean(); H.SetHeader("Server", "mistserver/" PACKAGE_VERSION); + H.setCORSHeaders(); + if(method == "OPTIONS" || method == "HEAD"){ + H.SendResponse("200", "OK", myConn); + H.Clean(); + return; + } H.SetBody("Yup"); H.SendResponse("200", "OK", myConn); + H.Clean(); return; } /*LTS-END*/ diff --git a/src/output/output_http_minimalserver.cpp b/src/output/output_http_minimalserver.cpp index ebdac0e7..7b198507 100644 --- a/src/output/output_http_minimalserver.cpp +++ b/src/output/output_http_minimalserver.cpp @@ -27,6 +27,7 @@ namespace Mist { } void OutHTTPMinimalServer::onHTTP(){ + std::string method = H.method; //determine actual file path for the request std::string path = resolved_path + H.url.substr(8); @@ -45,6 +46,11 @@ namespace Mist { } H.Clean(); H.SetHeader("Server", "mistserver/" PACKAGE_VERSION); + H.setCORSHeaders(); + if(method == "OPTIONS" || method == "HEAD"){ + H.SendResponse("200", "OK", myConn); + return; + } H.SetBody("File not found"); H.SendResponse("404", "OK", myConn); return; @@ -59,6 +65,12 @@ namespace Mist { H.Clean(); H.SetHeader("Server", "mistserver/" PACKAGE_VERSION); H.SetHeader("Content-Length", filesize); + H.setCORSHeaders(); + if(method == "OPTIONS" || method == "HEAD"){ + H.SendResponse("200", "OK", myConn); + H.Clean(); + return; + } H.SendResponse("200", "OK", myConn); while (inFile.good()){ inFile.read(buffer, 4096); diff --git a/src/output/output_httpts.cpp b/src/output/output_httpts.cpp index bfcac9cb..d7619d02 100644 --- a/src/output/output_httpts.cpp +++ b/src/output/output_httpts.cpp @@ -27,9 +27,17 @@ namespace Mist { } void OutHTTPTS::onHTTP(){ + std::string method = H.method; + initialize(); H.Clean(); H.SetHeader("Content-Type", "video/mp2t"); + H.setCORSHeaders(); + if(method == "OPTIONS" || method == "HEAD"){ + H.SendResponse("200", "OK", myConn); + H.Clean(); + return; + } H.StartResponse(H, myConn); parseData = true; wantRequest = false;