summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2003-05-05 03:18:41 +0000
committerJeremy Hylton <jeremy@alum.mit.edu>2003-05-05 03:18:41 +0000
commit1f5df13b1cedb23f989fec71331153fb1ab98a31 (patch)
tree33658189390272381aec6e0fe5d72ca88b519760 /Lib
parent7aed4a33acd1758a65e2980d48564b49a18a977c (diff)
downloadcpython-git-1f5df13b1cedb23f989fec71331153fb1ab98a31.tar.gz
Backport fix for SF #723831: urlopen() raises URLError.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/urllib2.py32
1 files changed, 17 insertions, 15 deletions
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 44e21644c4..e70b9e11e4 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -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)