Compare commits

...
Sign in to create a new pull request.

2 commits

Author SHA1 Message Date
Joey Yakimowich-Payne
ab5d77f972 Change the content length calculation to match the http spec
For reference:
https://www.w3.org/Protocols/HTTP/1.0/draft-ietf-http-spec.html#Entity-Body
2021-01-07 16:34:57 -07:00
Joey
944a0ac318
DELETE requests should always have a content-length header
Not having DELETE in this list is causing hanging when trying to close webdriver sessions in [halonium](https://github.com/halonium/halonium/issues/10) and likely any other implementation of the webdriver protocol. Both at least chromedriver and geckodriver are affected by this issue.
2021-01-06 14:03:59 -07:00

View file

@ -980,8 +980,11 @@ proc requestAux(client: HttpClient | AsyncHttpClient, url, httpMethod: string,
var data: seq[string] var data: seq[string]
if multipart != nil and multipart.content.len > 0: if multipart != nil and multipart.content.len > 0:
data = await client.format(multipart) data = await client.format(multipart)
elif httpMethod in ["POST", "PATCH", "PUT"] or body.len != 0: else:
client.headers["Content-Length"] = $body.len if body.len != 0:
client.headers["Content-Length"] = $body.len
elif httpMethod notin ["GET", "HEAD"] and not client.headers.hasKey("Content-Length"):
client.headers["Content-Length"] = "0"
when client is AsyncHttpClient: when client is AsyncHttpClient:
if not client.parseBodyFut.isNil: if not client.parseBodyFut.isNil: