diff options
author | Joey <jyapayne@gmail.com> | 2021-01-08 11:48:23 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-08 18:48:23 +0000 |
commit | bfcb7c1621ba4cadb228125e924f1fe6bf91e20c (patch) | |
tree | 6221b2d373f94bd56a00354c689c8c324aecb02e /lib/pure/httpclient.nim | |
parent | 38b8d080f29021d2685e09d552c2a7753ef25484 (diff) | |
download | Nim-bfcb7c1621ba4cadb228125e924f1fe6bf91e20c.tar.gz |
DELETE requests should always have a content-length header (#16618)
* 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. * 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
Diffstat (limited to 'lib/pure/httpclient.nim')
-rw-r--r-- | lib/pure/httpclient.nim | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim index 3093f5564..70f3327b1 100644 --- a/lib/pure/httpclient.nim +++ b/lib/pure/httpclient.nim @@ -980,8 +980,11 @@ proc requestAux(client: HttpClient | AsyncHttpClient, url, httpMethod: string, var data: seq[string] if multipart != nil and multipart.content.len > 0: data = await client.format(multipart) - elif httpMethod in ["POST", "PATCH", "PUT"] or body.len != 0: - client.headers["Content-Length"] = $body.len + else: + 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: if not client.parseBodyFut.isNil: |