diff options
author | Araq <rumpf_a@web.de> | 2018-01-12 15:08:12 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2018-01-12 15:08:12 +0100 |
commit | ee64dcd728e822991bf96669cbfb192bd8252648 (patch) | |
tree | f084921aebdbb4e094fb4b98d8ce4c962e14f5cc | |
parent | f1bf65f66e8bc3acb0afea4699a48c514189d355 (diff) | |
parent | 471ae7e081425a77921bb6dc8b1da27ac8fd7e63 (diff) | |
download | Nim-ee64dcd728e822991bf96669cbfb192bd8252648.tar.gz |
Merge branch 'devel' of github.com:nim-lang/Nim into devel
-rw-r--r-- | lib/pure/httpclient.nim | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim index 54a8498fa..aefcff37a 100644 --- a/lib/pure/httpclient.nim +++ b/lib/pure/httpclient.nim @@ -923,8 +923,14 @@ proc parseChunks(client: HttpClient | AsyncHttpClient): Future[void] if chunkSize <= 0: discard await recvFull(client, 2, client.timeout, false) # Skip \c\L break - discard await recvFull(client, chunkSize, client.timeout, true) - discard await recvFull(client, 2, client.timeout, false) # Skip \c\L + var bytesRead = await recvFull(client, chunkSize, client.timeout, true) + if bytesRead != chunkSize: + httpError("Server terminated connection prematurely") + + bytesRead = await recvFull(client, 2, client.timeout, false) # Skip \c\L + if bytesRead != 2: + httpError("Server terminated connection prematurely") + # Trailer headers will only be sent if the request specifies that we want # them: http://tools.ietf.org/html/rfc2616#section-3.6.1 @@ -965,7 +971,7 @@ proc parseBody(client: HttpClient | AsyncHttpClient, if headers.getOrDefault"Connection" == "close" or httpVersion == "1.0": while true: let recvLen = await client.recvFull(4000, client.timeout, true) - if recvLen == 0: + if recvLen != 4000: client.close() break |