mirror of
https://github.com/kennethreitz/requests3.git
synced 2026-06-05 23:10:16 +00:00
wrap url parsing exceptions from urllib3's PoolManager
This commit is contained in:
+6
-2
@@ -4,8 +4,12 @@ Release History
|
||||
dev
|
||||
---
|
||||
|
||||
**Bugfixes** - Content-Type header parsing is now case-insensitive (e.g.
|
||||
charset=utf8 v Charset=utf8).
|
||||
**Bugfixes**
|
||||
|
||||
- Content-Type header parsing is now case-insensitive (e.g.
|
||||
charset=utf8 v Charset=utf8).
|
||||
- Fixed exception leak where certain redirect urls would raise
|
||||
uncaught urllib3 exceptions.
|
||||
|
||||
- \[Short description of non-trivial change.\]
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ from urllib3.exceptions import ProtocolError
|
||||
from urllib3.exceptions import ReadTimeoutError
|
||||
from urllib3.exceptions import SSLError as _SSLError
|
||||
from urllib3.exceptions import ResponseError
|
||||
from urllib3.exceptions import LocationValueError
|
||||
|
||||
from .models import Response
|
||||
from .compat import urlparse, basestring
|
||||
@@ -35,7 +36,8 @@ from .utils import (DEFAULT_CA_BUNDLE_PATH, extract_zipped_paths,
|
||||
from .structures import CaseInsensitiveDict
|
||||
from .cookies import extract_cookies_to_jar
|
||||
from .exceptions import (ConnectionError, ConnectTimeout, ReadTimeout, SSLError,
|
||||
ProxyError, RetryError, InvalidSchema, InvalidProxyURL)
|
||||
ProxyError, RetryError, InvalidSchema, InvalidProxyURL,
|
||||
InvalidURL)
|
||||
from .auth import _basic_auth_str
|
||||
|
||||
try:
|
||||
@@ -407,7 +409,10 @@ class HTTPAdapter(BaseAdapter):
|
||||
:rtype: requests.Response
|
||||
"""
|
||||
|
||||
conn = self.get_connection(request.url, proxies)
|
||||
try:
|
||||
conn = self.get_connection(request.url, proxies)
|
||||
except LocationValueError as e:
|
||||
raise InvalidURL(e, request=request)
|
||||
|
||||
self.cert_verify(conn, request.url, verify, cert)
|
||||
url = self.request_url(request, proxies)
|
||||
|
||||
@@ -2426,6 +2426,16 @@ class TestPreparingURLs(object):
|
||||
with pytest.raises(requests.exceptions.InvalidURL):
|
||||
r.prepare()
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'url, exception',
|
||||
(
|
||||
('http://localhost:-1', InvalidURL),
|
||||
)
|
||||
)
|
||||
def test_redirecting_to_bad_url(self, httpbin, url, exception):
|
||||
with pytest.raises(exception):
|
||||
r = requests.get(httpbin('redirect-to'), params={'url': url})
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
'input, expected',
|
||||
(
|
||||
|
||||
Reference in New Issue
Block a user