Better percent-escape exception.
authorCory Benfield <lukasaoz@gmail.com>
Fri, 2 Aug 2013 11:29:23 +0000 (12:29 +0100)
committerCory Benfield <lukasaoz@gmail.com>
Fri, 2 Aug 2013 11:29:23 +0000 (12:29 +0100)
requests/utils.py

index 347f2be..00da266 100644 (file)
@@ -25,7 +25,7 @@ from .compat import (quote, urlparse, bytes, str, OrderedDict, urlunparse,
                      is_py2, is_py3, builtin_str, getproxies, proxy_bypass)
 from .cookies import RequestsCookieJar, cookiejar_from_dict
 from .structures import CaseInsensitiveDict
-from .exceptions import MissingSchema
+from .exceptions import MissingSchema, InvalidURL
 
 _hush_pyflakes = (RequestsCookieJar,)
 
@@ -363,7 +363,11 @@ def unquote_unreserved(uri):
     for i in range(1, len(parts)):
         h = parts[i][0:2]
         if len(h) == 2 and h.isalnum():
-            c = chr(int(h, 16))
+            try:
+                c = chr(int(h, 16))
+            except ValueError:
+                raise InvalidURL("Invalid percent-escape sequence: '%s'" % h)
+
             if c in UNRESERVED_SET:
                 parts[i] = c + parts[i][2:]
             else: