urllib3 v1.8 Release Notes

Release Date: 2014-03-04 // about 10 years ago
    • ๐Ÿ‘Œ Improved url parsing in urllib3.util.parse_url (properly parse '@' in username, and blank ports like 'hostname:').

    • ๐Ÿ†• New urllib3.connection module which contains all the HTTPConnection objects.

    • ๐Ÿ›  Several urllib3.util.Timeout-related fixes. Also changed constructor signature to a more sensible order. [Backwards incompatible] (Issues #252, #262, #263)

    • Use backports.ssl_match_hostname if it's installed. (Issue #274)

    • โž• Added .tell() method to urllib3.response.HTTPResponse which returns the number of bytes read so far. (Issue #277)

    • ๐Ÿ‘Œ Support for platforms without threading. (Issue #289)

    • Expand default-port comparison in HTTPConnectionPool.is_same_host to allow a pool with no specified port to be considered equal to to an HTTP/HTTPS url with port 80/443 explicitly provided. (Issue #305)

    • ๐Ÿ‘Œ Improved default SSL/TLS settings to avoid vulnerabilities. (Issue #309)

    • ๐Ÿ›  Fixed urllib3.poolmanager.ProxyManager not retrying on connect errors. (Issue #310)

    • Disable Nagle's Algorithm on the socket for non-proxies. A subset of requests will send the entire HTTP request ~200 milliseconds faster; however, some of the resulting TCP packets will be smaller. (Issue #254)

    • Increased maximum number of SubjectAltNames in urllib3.contrib.pyopenssl from the default 64 to 1024 in a single certificate. (Issue #318)

    • Headers are now passed and stored as a custom urllib3.collections_.HTTPHeaderDict object rather than a plain dict. (Issue #329, #333)

    • Headers no longer lose their case on Python 3. (Issue #236)

    • 0๏ธโƒฃ urllib3.contrib.pyopenssl now uses the operating system's default CA certificates on inject. (Issue #332)

    • Requests with retries=False will immediately raise any exceptions without wrapping them in MaxRetryError. (Issue #348)

    • ๐Ÿ›  Fixed open socket leak with SSL-related failures. (Issue #344, #348)