From a38a00b981de3031a51e76c8a2e220b59557c469 Mon Sep 17 00:00:00 2001 From: Michael Vogt Date: Tue, 10 Jul 2012 12:26:15 +0200 Subject: always send content-length via the new addDataHeaders() to ensure w3m/curl are happy too for 404 pages and to comply with the http 1.1 spec --- test/interactive-helper/aptwebserver.cc | 34 +++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/test/interactive-helper/aptwebserver.cc b/test/interactive-helper/aptwebserver.cc index c7b815925..ebe04d2a3 100644 --- a/test/interactive-helper/aptwebserver.cc +++ b/test/interactive-helper/aptwebserver.cc @@ -78,6 +78,13 @@ void addFileHeaders(std::list &headers, FileFd &data) { /*{{{*/ lastmodified.append(TimeRFC1123(data.ModificationTime())); headers.push_back(lastmodified); } /*}}}*/ + +void addDataHeaders(std::list &headers, std::string &data) {/*{{{*/ + std::ostringstream contentlength; + contentlength << "Content-Length: " << data.size(); + headers.push_back(contentlength.str()); +} /*}}}*/ + bool sendHead(int client, int httpcode, std::list &headers) { /*{{{*/ string response("HTTP/1.1 "); response.append(httpcodeToStr(httpcode)); @@ -124,14 +131,16 @@ bool sendData(int client, std::string &data) { /*{{{*/ void sendError(int client, int httpcode, string request, bool content) { /*{{{*/ std::list headers; + string response; + if (content == true) { + response.append(""); + response.append(httpcodeToStr(httpcode)).append(""); + response.append("

").append(httpcodeToStr(httpcode)).append(""); + response.append(request).append(""); + addDataHeaders(headers, response); + } sendHead(client, httpcode, headers); - if (content == false) - return; - string response(""); - response.append(httpcodeToStr(httpcode)).append(""); - response.append("

").append(httpcodeToStr(httpcode)).append(""); - response.append(request).append(""); sendData(client, response); } /*}}}*/ @@ -219,8 +228,9 @@ int main(int argc, const char *argv[]) string filename = m->substr(5, filestart - 5); if (simulate_broken_server == true) { + string data("ni ni ni\n"); + addDataHeaders(headers, data); sendHead(client, 200, headers); - string data("ni ni ni"); sendData(client, data); } else if (RealFileExists(filename) == false) @@ -244,11 +254,11 @@ int main(int argc, const char *argv[]) } _error->DumpErrors(std::cerr); messages.clear(); - - std::clog << "CLOSE client " << client - << " on socket " << sock << std::endl; - close(client); } + + std::clog << "CLOSE client " << client + << " on socket " << sock << std::endl; + close(client); } return 0; } -- cgit v1.2.3