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