diff --git a/changelog.md b/changelog.md index ea22028397..d70a4367d8 100644 --- a/changelog.md +++ b/changelog.md @@ -2,6 +2,7 @@ ## Changes affecting backward compatibility +- `httpclient.contentLength` default to `-1` if the Content-Length header is not set in the response, it followed Apache HttpClient(Java), http(go) and .Net HttpWebResponse(C#) behavior. Previously raise `ValueError`. - `addr` is now available for all addressable locations, `unsafeAddr` is now deprecated and an alias for `addr`. diff --git a/lib/pure/httpclient.nim b/lib/pure/httpclient.nim index dcd1f87d6c..405fadc2f9 100644 --- a/lib/pure/httpclient.nim +++ b/lib/pure/httpclient.nim @@ -274,9 +274,9 @@ proc contentLength*(response: Response | AsyncResponse): int = ## This is effectively the value of the "Content-Length" header. ## ## A `ValueError` exception will be raised if the value is not an integer. - var contentLengthHeader = response.headers.getOrDefault("Content-Length") + ## If the Content-Length header is not set in the response, ContentLength is set to the value -1. + var contentLengthHeader = response.headers.getOrDefault("Content-Length", @["-1"]) result = contentLengthHeader.parseInt() - doAssert(result >= 0 and result <= high(int32)) proc lastModified*(response: Response | AsyncResponse): DateTime = ## Retrieves the specified response's last modified time.