]> granicus.if.org Git - python/commitdiff
Merged revisions 85025 via svnmerge from
authorSenthil Kumaran <orsenthil@gmail.com>
Mon, 27 Sep 2010 01:40:59 +0000 (01:40 +0000)
committerSenthil Kumaran <orsenthil@gmail.com>
Mon, 27 Sep 2010 01:40:59 +0000 (01:40 +0000)
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85025 | senthil.kumaran | 2010-09-27 06:56:03 +0530 (Mon, 27 Sep 2010) | 6 lines

  Fix Issue1595365 - Adding the req.headers after the un-redirect headers have
  been added. This helps in accidental overwritting of User-Agent header to
  default value. To preserve the old behavior, only headers not in unredirected
  headers will be updated.
........

Lib/test/test_urllib2net.py
Lib/urllib2.py

index 56e952d1478228e5e84561991a7d479f187537dd..5ace162e7b6ad6cf55b127f0f83e3ee7c7a56d2f 100644 (file)
@@ -172,6 +172,18 @@ class OtherNetworkTests(unittest.TestCase):
         finally:
             res.close()
 
+    def test_custom_headers(self):
+        url = "http://www.example.com"
+        opener = urllib2.build_opener()
+        request = urllib2.Request(url)
+        self.assertFalse(request.header_items())
+        opener.open(request)
+        self.assertTrue(request.header_items())
+        self.assertTrue(request.has_header('User-agent'))
+        request.add_header('User-Agent','Test-Agent')
+        opener.open(request)
+        self.assertEqual(request.get_header('User-agent'),'Test-Agent')
+
     def _test_urls(self, urls, handlers, retry=True):
         import time
         import logging
index 5c717a4c5d9b84d0d4ceabf3dbf0d216998a80d7..adc6d8c55a92f32df988733d1e25b1820c97cf1a 100644 (file)
@@ -1127,8 +1127,10 @@ class AbstractHTTPHandler(BaseHandler):
         h = http_class(host, timeout=req.timeout) # will parse host:port
         h.set_debuglevel(self._debuglevel)
 
-        headers = dict(req.headers)
-        headers.update(req.unredirected_hdrs)
+        headers = dict(req.unredirected_hdrs)
+        headers.update(dict((k, v) for k, v in req.headers.items()
+                            if k not in headers))
+
         # We want to make an HTTP/1.1 request, but the addinfourl
         # class isn't prepared to deal with a persistent connection.
         # It will try to read all remaining data from the socket,