[Python-checkins] r54463 - python/trunk/Lib/urllib.py

neal.norwitz python-checkins at python.org
Tue Mar 20 09:14:59 CET 2007


Author: neal.norwitz
Date: Tue Mar 20 09:14:57 2007
New Revision: 54463

Modified:
   python/trunk/Lib/urllib.py
Log:
Try to get test_urllib to pass on Windows by closing the file.
I'm guessing that's the problem.  h.getfile() must be called *after*
h.getreply() and the fp can be None.

I'm not entirely convinced this is the best fix (or even correct).
The buildbots will tell us if things improve or not.  I don't
know if this needs to be backported (assuming it actually works).


Modified: python/trunk/Lib/urllib.py
==============================================================================
--- python/trunk/Lib/urllib.py	(original)
+++ python/trunk/Lib/urllib.py	Tue Mar 20 09:14:57 2007
@@ -326,11 +326,12 @@
         if data is not None:
             h.send(data)
         errcode, errmsg, headers = h.getreply()
+        fp = h.getfile()
         if errcode == -1:
+            if fp: fp.close()
             # something went wrong with the HTTP status line
             raise IOError, ('http protocol error', 0,
                             'got a bad status line', None)
-        fp = h.getfile()
         if errcode == 200:
             return addinfourl(fp, headers, "http:" + url)
         else:
@@ -417,11 +418,12 @@
             if data is not None:
                 h.send(data)
             errcode, errmsg, headers = h.getreply()
+            fp = h.getfile()
             if errcode == -1:
+                if fp: fp.close()
                 # something went wrong with the HTTP status line
                 raise IOError, ('http protocol error', 0,
                                 'got a bad status line', None)
-            fp = h.getfile()
             if errcode == 200:
                 return addinfourl(fp, headers, "https:" + url)
             else:


More information about the Python-checkins mailing list