diff options
author | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2019-02-16 17:05:13 +0100 |
---|---|---|
committer | Fabio Alessandrelli <fabio.alessandrelli@gmail.com> | 2019-02-16 17:05:13 +0100 |
commit | 673caa5f462e4f89ffae65b111a9817d29467277 (patch) | |
tree | 52ac5cd3e280f40cf84aaaa25121c61773741c1c | |
parent | 1aa1f42963a2b98040e2fdd74e174458710dcafb (diff) |
Fix keep-alive without header in HTTP client
-rw-r--r-- | core/io/http_client.cpp | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/core/io/http_client.cpp b/core/io/http_client.cpp index b3fd814870..b25b1934ff 100644 --- a/core/io/http_client.cpp +++ b/core/io/http_client.cpp @@ -426,11 +426,10 @@ Error HTTPClient::poll() { response_headers.clear(); response_num = RESPONSE_OK; - // Per the HTTP 1.1 spec, keep-alive is the default, but in practice - // it's safe to assume it only if the explicit header is found, allowing - // to handle body-up-to-EOF responses on naive servers; that's what Curl - // and browsers do - bool keep_alive = false; + // Per the HTTP 1.1 spec, keep-alive is the default. + // Not following that specification breaks standard implemetations. + // Broken web servers should be fixed. + bool keep_alive = true; for (int i = 0; i < responses.size(); i++) { @@ -447,8 +446,8 @@ Error HTTPClient::poll() { if (encoding == "chunked") { chunked = true; } - } else if (s.begins_with("connection: keep-alive")) { - keep_alive = true; + } else if (s.begins_with("connection: close")) { + keep_alive = false; } if (i == 0 && responses[i].begins_with("HTTP")) { |