diff options
author | Nadeem Vawda <nadeem.vawda@gmail.com> | 2011-07-23 15:51:16 +0200 |
---|---|---|
committer | Nadeem Vawda <nadeem.vawda@gmail.com> | 2011-07-23 15:51:16 +0200 |
commit | b42c53e442b211d0ded1d4c9abd18c74d29ed663 (patch) | |
tree | 0ad39ae840da96efaa2ff6bdb49f2c44a226c0aa /Lib/urllib2.py | |
parent | 578617ad453c399ea52c0aef937fdf0904b2213c (diff) | |
download | cpython-git-b42c53e442b211d0ded1d4c9abd18c74d29ed663.tar.gz |
Issue #10883: Fix socket leaks in urllib.request.
* ftpwrapper now uses reference counting to ensure that the underlying socket
is closed when the ftpwrapper object is no longer in use
* ftplib.FTP.ntransfercmd() now closes the socket if an error occurs
Initial patch by Victor Stinner.
Diffstat (limited to 'Lib/urllib2.py')
-rw-r--r-- | Lib/urllib2.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/Lib/urllib2.py b/Lib/urllib2.py index 26416193f6..2bce745e63 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -1399,7 +1399,8 @@ class FTPHandler(BaseHandler): raise URLError, ('ftp error: %s' % msg), sys.exc_info()[2] def connect_ftp(self, user, passwd, host, port, dirs, timeout): - fw = ftpwrapper(user, passwd, host, port, dirs, timeout) + fw = ftpwrapper(user, passwd, host, port, dirs, timeout, + persistent=False) ## fw.ftp.set_debuglevel(1) return fw @@ -1448,3 +1449,9 @@ class CacheFTPHandler(FTPHandler): del self.timeout[k] break self.soonest = min(self.timeout.values()) + + def clear_cache(self): + for conn in self.cache.values(): + conn.close() + self.cache.clear() + self.timeout.clear() |