Caused by not skipping the \c\l with Chunked encoding after the body is parsed.
This commit is contained in:
Dominik Picheta 2014-12-21 22:41:13 +00:00
commit e6245674f2

View file

@ -156,7 +156,9 @@ proc parseChunks(s: Socket, timeout: int): string =
else: else:
httpError("Invalid chunk size: " & chunkSizeStr) httpError("Invalid chunk size: " & chunkSizeStr)
inc(i) inc(i)
if chunkSize <= 0: break if chunkSize <= 0:
s.skip(2, timeout) # Skip \c\L
break
result.setLen(ri+chunkSize) result.setLen(ri+chunkSize)
var bytesRead = 0 var bytesRead = 0
while bytesRead != chunkSize: while bytesRead != chunkSize:
@ -521,7 +523,9 @@ proc parseChunks(client: AsyncHttpClient): Future[string] {.async.} =
else: else:
httpError("Invalid chunk size: " & chunkSizeStr) httpError("Invalid chunk size: " & chunkSizeStr)
inc(i) inc(i)
if chunkSize <= 0: break if chunkSize <= 0:
discard await recvFull(client.socket, 2) # Skip \c\L
break
result.add await recvFull(client.socket, chunkSize) result.add await recvFull(client.socket, chunkSize)
discard await recvFull(client.socket, 2) # Skip \c\L discard await recvFull(client.socket, 2) # Skip \c\L
# Trailer headers will only be sent if the request specifies that we want # Trailer headers will only be sent if the request specifies that we want