Fix Issue11703 - urllib2.geturl() does not return correct url when the original url contains #fragment. Patch Contribution by Santoso Wijaya.
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 220dfe4..6b29901 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -163,7 +163,7 @@
origin_req_host=None, unverifiable=False):
# unwrap('<URL:type://host/path>') --> 'type://host/path'
self.full_url = unwrap(url)
- self.full_url, fragment = splittag(self.full_url)
+ self.full_url, self.fragment = splittag(self.full_url)
self.data = data
self.headers = {}
self._tunnel_host = None
@@ -202,7 +202,10 @@
return self.data
def get_full_url(self):
- return self.full_url
+ if self.fragment:
+ return '%s#%s' % (self.full_url, self.fragment)
+ else:
+ return self.full_url
def get_type(self):
return self.type
@@ -1106,7 +1109,7 @@
except socket.error as err:
raise URLError(err)
- r.url = req.full_url
+ r.url = req.get_full_url()
# This line replaces the .msg attribute of the HTTPResponse
# with .headers, because urllib clients expect the response to
# have the reason in .msg. It would be good to mark this