X-Git-Url: https://git.sesse.net/?p=cubemap;a=blobdiff_plain;f=httpinput.cpp;h=74466c7acbb671f33f4f0fa3a76c77091e324038;hp=c9231453e1e919062024073d1d73efa1dc1fd487;hb=94cd6d8799191a79fde828abfbc30cf9951c1cfc;hpb=22cd7233eabd1d012f29e890ec67c6b70a0d6753 diff --git a/httpinput.cpp b/httpinput.cpp index c923145..74466c7 100644 --- a/httpinput.cpp +++ b/httpinput.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -22,6 +23,7 @@ #include "parse.h" #include "serverpool.h" #include "state.pb.h" +#include "stream.h" #include "util.h" #include "version.h" @@ -74,15 +76,8 @@ HTTPInput::HTTPInput(const InputProto &serialized) pending_data.resize(serialized.pending_data().size()); memcpy(&pending_data[0], serialized.pending_data().data(), serialized.pending_data().size()); - 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); - } + string protocol, user; + parse_url(url, &protocol, &user, &host, &port, &path); // Don't care if it fails. pthread_mutex_init(&stats_mutex, NULL); stats.url = url; @@ -99,6 +94,7 @@ void HTTPInput::close_socket() { if (sock != -1) { safe_close(sock); + sock = -1; } MutexLock lock(&stats_mutex); @@ -344,8 +340,8 @@ void HTTPInput::do_work() } { - string protocol; // Thrown away. - if (!parse_url(url, &protocol, &host, &port, &path)) { + string protocol, user; // Thrown away. + if (!parse_url(url, &protocol, &user, &host, &port, &path)) { log(WARNING, "[%s] Failed to parse URL '%s'", url.c_str(), url.c_str()); break; } @@ -416,7 +412,7 @@ void HTTPInput::do_work() RequestParseStatus status = wait_for_double_newline(&response, buf, ret); if (status == RP_OUT_OF_SPACE) { - log(WARNING, "[%s] Sever sent overlong HTTP response!", url.c_str()); + log(WARNING, "[%s] Server sent overlong HTTP response!", url.c_str()); state = CLOSING_SOCKET; continue; } else if (status == RP_NOT_FINISHED_YET) {