From: Facundo Batista <facundobatista@gmail.com>
Date: Sun, 17 Aug 2008 03:36:03 +0000 (+0000)
Subject: Issue 2464. Supports a malformation in the URL received
X-Git-Tag: v3.0b3~89
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f24802c0068f5d1023c77abad328f979c3a13bc6;p=python

Issue 2464. Supports a malformation in the URL received
in a redirect.
---

diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 428be4acef..889d964209 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -100,7 +100,7 @@ from urllib.error import URLError, HTTPError, ContentTooShortError
 from urllib.parse import (
     urlparse, urlsplit, urljoin, unwrap, quote, unquote,
     splittype, splithost, splitport, splituser, splitpasswd,
-    splitattr, splitquery, splitvalue, to_bytes)
+    splitattr, splitquery, splitvalue, to_bytes, urlunparse)
 from urllib.response import addinfourl, addclosehook
 
 # check for SSL
@@ -535,6 +535,14 @@ class HTTPRedirectHandler(BaseHandler):
             newurl = headers["uri"]
         else:
             return
+
+        # fix a possible malformed URL
+        urlparts = urlparse(newurl)
+        if not urlparts.path:
+            urlparts = list(urlparts)
+            urlparts[2] = "/"
+        newurl = urlunparse(urlparts)
+
         newurl = urljoin(req.get_full_url(), newurl)
 
         # XXX Probably want to forget about the state of the current