[Python-checkins] r85026 - in python/branches/release31-maint: Lib/test/test_urllib2net.py Lib/urllib/request.py

senthil.kumaran python-checkins at python.org
Mon Sep 27 03:28:10 CEST 2010


Author: senthil.kumaran
Date: Mon Sep 27 03:28:10 2010
New Revision: 85026

Log:
Merged revisions 85025 via svnmerge from 
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. 
........


Modified:
   python/branches/release31-maint/   (props changed)
   python/branches/release31-maint/Lib/test/test_urllib2net.py
   python/branches/release31-maint/Lib/urllib/request.py

Modified: python/branches/release31-maint/Lib/test/test_urllib2net.py
==============================================================================
--- python/branches/release31-maint/Lib/test/test_urllib2net.py	(original)
+++ python/branches/release31-maint/Lib/test/test_urllib2net.py	Mon Sep 27 03:28:10 2010
@@ -159,6 +159,18 @@
         self.assertEqual(res.geturl(),
                 "http://docs.python.org/glossary.html")
 
+    def test_custom_headers(self):
+        url = "http://www.example.com"
+        opener = urllib.request.build_opener()
+        request = urllib.request.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 socket
         import time

Modified: python/branches/release31-maint/Lib/urllib/request.py
==============================================================================
--- python/branches/release31-maint/Lib/urllib/request.py	(original)
+++ python/branches/release31-maint/Lib/urllib/request.py	Mon Sep 27 03:28:10 2010
@@ -1063,8 +1063,10 @@
             raise URLError('no host given')
 
         h = http_class(host, timeout=req.timeout) # will parse host:port
-        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))
 
         # TODO(jhylton): Should this be redesigned to handle
         # persistent connections?


More information about the Python-checkins mailing list