merge from 3.2 - fix urlopen behavior on sites which do not send (or obsfuscates) Connection: Close header.
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 2bce745..a0065b5 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -1166,14 +1166,14 @@
 
         try:
             h.request(req.get_method(), req.get_selector(), req.data, headers)
+        except socket.error, err: # XXX what error?
+            h.close()
+            raise URLError(err)
+        else:
             try:
                 r = h.getresponse(buffering=True)
-            except TypeError: #buffering kw not supported
+            except TypeError: # buffering kw not supported
                 r = h.getresponse()
-        except socket.error, err: # XXX what error?
-            raise URLError(err)
-        finally:
-            h.close()
 
         # Pick apart the HTTPResponse object to get the addinfourl
         # object initialized properly.