]> granicus.if.org Git - python/commitdiff
Try to get test_urllib to pass on Windows by closing the file.
authorNeal Norwitz <nnorwitz@gmail.com>
Tue, 20 Mar 2007 08:14:57 +0000 (08:14 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Tue, 20 Mar 2007 08:14:57 +0000 (08:14 +0000)
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).

Lib/urllib.py

index c000f1129eae19b0e2990d07695dc616a7b7f7f5..7b2f1f74258839d617a17dfb9a817a3bcbc14946 100644 (file)
@@ -326,11 +326,12 @@ class URLopener:
         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 @@ class URLopener:
             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: