From c580dae6da60aa76e9b885ddbf7a9833aa61c147 Mon Sep 17 00:00:00 2001
From: Guido van Rossum <guido@python.org>
Date: Wed, 24 May 2000 13:21:46 +0000
Subject: Fix a problem reported by Oleg Broytmann, who complains that very
 often, ftp URLs hang in the final close.  Further analysis suggests that this
 is because the close hook in addclosehook() calls the hook before acually
 closing the connection.  The hook, in this case, waits for the '226 Transfer
 complete' status from the server on the command socket.  However, more and
 more ftp servers only send this status when the data socket has actually been
 closed -- causing a deadlock.

The fix is simple: in addclosehook.close(), call addbase.close()
*before* calling the closehook.
---
 Lib/urllib.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Lib/urllib.py b/Lib/urllib.py
index 7328f9a..c96dd64 100644
--- a/Lib/urllib.py
+++ b/Lib/urllib.py
@@ -726,11 +726,11 @@ class addclosehook(addbase):
         self.hookargs = hookargs
 
     def close(self):
+        addbase.close(self)
         if self.closehook:
             apply(self.closehook, self.hookargs)
             self.closehook = None
             self.hookargs = None
-        addbase.close(self)
 
 class addinfo(addbase):
     """class to add an info() method to an open file."""
-- 
cgit v0.12

