From 537c3cff94624d61a47b9b900dcc7024ce855523 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Thu, 13 Feb 2014 10:33:01 +0100 Subject: [PATCH] Added support for overriding multiplexing behaviour of HTTP proxy connector. --- src/connectors/conn_http.cpp | 2 +- src/connectors/conn_http_progressive_mp4.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/connectors/conn_http.cpp b/src/connectors/conn_http.cpp index 37503fd1..ec0e2bbd 100644 --- a/src/connectors/conn_http.cpp +++ b/src/connectors/conn_http.cpp @@ -508,7 +508,7 @@ namespace Connector_HTTP { }else{ long long int ret = Util::getMS(); //success, check type of response - if (H.GetHeader("Content-Length") != "" || H.GetHeader("Transfer-Encoding") == "chunked"){ + if (H.GetHeader("MistMultiplex") != "No" && (H.GetHeader("Content-Length") != "" || H.GetHeader("Transfer-Encoding") == "chunked")){ //known length - simply re-send the request with added headers and continue DEBUG_MSG(DLVL_HIGH, "Proxying %s - known length or chunked transfer encoding", uid.c_str()); H.SetHeader("X-UID", uid); diff --git a/src/connectors/conn_http_progressive_mp4.cpp b/src/connectors/conn_http_progressive_mp4.cpp index a94994d7..cacd0065 100644 --- a/src/connectors/conn_http_progressive_mp4.cpp +++ b/src/connectors/conn_http_progressive_mp4.cpp @@ -509,6 +509,10 @@ namespace Connector_HTTP { std::stringstream rangeReply; rangeReply << "bytes " << byteStart << "-" << byteEnd << "/" << size; HTTP_S.SetHeader("Content-Length", byteEnd - byteStart + 1); + //do not multiplex requests that are > 1MiB + if (byteEnd - byteStart + 1 > 1024*1024){ + HTTP_S.SetHeader("MistMultiplex", "No"); + } HTTP_S.SetHeader("Content-Range", rangeReply.str()); /// \todo Switch to chunked? HTTP_S.SendResponse("206", "Partial content", conn); @@ -516,6 +520,8 @@ namespace Connector_HTTP { } }else{ HTTP_S.SetHeader("Content-Length", byteEnd - byteStart + 1); + //do not multiplex requests that aren't ranged + HTTP_S.SetHeader("MistMultiplex", "No"); /// \todo Switch to chunked? HTTP_S.SendResponse("200", "OK", conn); //HTTP_S.StartResponse(HTTP_R, conn);