]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Backport fix for SF #723831: urlopen() raises URLError.
authorJeremy Hylton <jeremy@alum.mit.edu>
Mon, 5 May 2003 03:18:41 +0000 (03:18 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Mon, 5 May 2003 03:18:41 +0000 (03:18 +0000)
Lib/urllib2.py

index 44e21644c45a880f5e9daee11cc72916b078ffb3..e70b9e11e4e54b9c2e3a8bb66b150721f05a807f 100644 (file)
@@ -780,20 +780,17 @@ class AbstractHTTPHandler(BaseHandler):
         if not host:
             raise URLError('no host given')
 
-        try:
-            h = http_class(host) # will parse host:port
-            if req.has_data():
-                data = req.get_data()
-                h.putrequest('POST', req.get_selector())
-                if not req.headers.has_key('Content-type'):
-                    h.putheader('Content-type',
-                                'application/x-www-form-urlencoded')
-                if not req.headers.has_key('Content-length'):
-                    h.putheader('Content-length', '%d' % len(data))
-            else:
-                h.putrequest('GET', req.get_selector())
-        except socket.error, err:
-            raise URLError(err)
+        h = http_class(host) # will parse host:port
+        if req.has_data():
+            data = req.get_data()
+            h.putrequest('POST', req.get_selector())
+            if not req.headers.has_key('Content-type'):
+                h.putheader('Content-type',
+                            'application/x-www-form-urlencoded')
+            if not req.headers.has_key('Content-length'):
+                h.putheader('Content-length', '%d' % len(data))
+        else:
+            h.putrequest('GET', req.get_selector())
 
         scheme, sel = splittype(req.get_selector())
         sel_host, sel_path = splithost(sel)
@@ -802,7 +799,12 @@ class AbstractHTTPHandler(BaseHandler):
             h.putheader(*args)
         for k, v in req.headers.items():
             h.putheader(k, v)
-        h.endheaders()
+        # httplib will attempt to connect() here.  be prepared
+        # to convert a socket error to a URLError.
+        try:
+            h.endheaders()
+        except socket.error, err:
+            raise URLError(err)
         if req.has_data():
             h.send(data)