X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=httpinput.cpp;h=457c2160b241709b042ea473ec3a0c8803f3581e;hp=51b4f412582bb94d512b074249d5375f94804bfb;hb=8f44468bfe4a1d1607b0ab7044c3071605ae1fa7;hpb=340489a8e732519182ecbc92116e7dfa2997143c diff --git a/httpinput.cpp b/httpinput.cpp index 51b4f41..457c216 100644 --- a/httpinput.cpp +++ b/httpinput.cpp @@ -50,6 +50,13 @@ HTTPInput::HTTPInput(const InputProto &serialized) string protocol; parse_url(url, &protocol, &host, &port, &path); // Don't care if it fails. + + // Older versions stored the extra \r\n in the HTTP header. + // Strip it if we find it. + if (http_header.size() >= 4 && + memcmp(http_header.data() + http_header.size() - 4, "\r\n\r\n", 4) == 0) { + http_header.resize(http_header.size() - 2); + } } void HTTPInput::close_socket() @@ -200,10 +207,9 @@ bool HTTPInput::parse_response(const std::string &request) ++it) { http_header.append(it->first + ": " + it->second + "\r\n"); } - http_header.append("\r\n"); for (size_t i = 0; i < stream_ids.size(); ++i) { - servers->set_header(stream_ids[i], http_header); + servers->set_header(stream_ids[i], http_header, ""); } return true; @@ -237,7 +243,7 @@ void HTTPInput::do_work() response.clear(); pending_data.clear(); for (size_t i = 0; i < stream_ids.size(); ++i) { - servers->set_header(stream_ids[i], ""); + servers->set_header(stream_ids[i], "", ""); } { @@ -444,7 +450,7 @@ void HTTPInput::process_data(char *ptr, size_t bytes) if (flags & METACUBE_FLAGS_HEADER) { string header(inner_data, inner_data + size); for (size_t i = 0; i < stream_ids.size(); ++i) { - servers->set_header(stream_ids[i], http_header + header); + servers->set_header(stream_ids[i], http_header, header); } } else { for (size_t i = 0; i < stream_ids.size(); ++i) {