diff options
author | konradmb <konradmb@o2.pl> | 2019-08-08 08:41:56 +0200 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2019-08-08 08:41:56 +0200 |
commit | addd7b5e20a00f0a07140271c96b28882a6d0ac0 (patch) | |
tree | a268e09382371f3e173591a39b54b409ce122384 /lib | |
parent | c8cffaf42037ae8defe59d9a1fb7d202655aa1ee (diff) | |
download | Nim-addd7b5e20a00f0a07140271c96b28882a6d0ac0.tar.gz |
Fix issue #10726 - HTTP response without Content-Length is not accessible (#11904)
* Add patch by @xenogenesi * Async test for HTTP/1.1 without Content-Length * Apply suggestions from code review Co-Authored-By: Dominik Picheta <dominikpicheta@googlemail.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pure/httpclient.nim | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim index 9ae9819c3..daaf12597 100644 --- a/lib/pure/httpclient.nim +++ b/lib/pure/httpclient.nim @@ -340,7 +340,10 @@ proc parseBody(s: Socket, headers: HttpHeaders, httpVersion: string, timeout: in # -REGION- Connection: Close # (http://tools.ietf.org/html/rfc2616#section-4.4) NR.5 - if headers.getOrDefault"Connection" == "close" or httpVersion == "1.0": + let implicitConnectionClose = + httpVersion == "1.0" or + httpVersion == "1.1" # This doesn't match the HTTP spec, but it fixes issues for non-conforming servers. + if headers.getOrDefault"Connection" == "close" or implicitConnectionClose: var buf = "" while true: buf = newString(4000) @@ -811,7 +814,10 @@ proc parseBody(client: HttpClient | AsyncHttpClient, # -REGION- Connection: Close # (http://tools.ietf.org/html/rfc2616#section-4.4) NR.5 - if headers.getOrDefault"Connection" == "close" or httpVersion == "1.0": + let implicitConnectionClose = + httpVersion == "1.0" or + httpVersion == "1.1" # This doesn't match the HTTP spec, but it fixes issues for non-conforming servers. + if headers.getOrDefault"Connection" == "close" or implicitConnectionClose: while true: let recvLen = await client.recvFull(4000, client.timeout, true) if recvLen != 4000: |