Fixes #1759.
Caused by not skipping the \c\l with Chunked encoding after the body is parsed.
This commit is contained in:
parent
2990a9224b
commit
e6245674f2
1 changed files with 6 additions and 2 deletions
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue