summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2000-05-24 13:21:46 (GMT)
committerGuido van Rossum <guido@python.org>2000-05-24 13:21:46 (GMT)
commitc580dae6da60aa76e9b885ddbf7a9833aa61c147 (patch)
tree16a176a113749007eda867ad270719643afb6a62
parenta570c059976b4ed402f2edc7c44b378475ae50a6 (diff)
downloadcpython-c580dae6da60aa76e9b885ddbf7a9833aa61c147.zip
cpython-c580dae6da60aa76e9b885ddbf7a9833aa61c147.tar.gz
cpython-c580dae6da60aa76e9b885ddbf7a9833aa61c147.tar.bz2
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.
-rw-r--r--Lib/urllib.py2
1 files changed, 1 insertions, 1 deletions
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."""