summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_urllib2net.py2
-rw-r--r--Lib/urllib/request.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/Lib/test/test_urllib2net.py b/Lib/test/test_urllib2net.py
index 5da41c37bb..d8d882b2d3 100644
--- a/Lib/test/test_urllib2net.py
+++ b/Lib/test/test_urllib2net.py
@@ -134,8 +134,10 @@ class OtherNetworkTests(unittest.TestCase):
# They do sometimes catch some major disasters, though.
def test_ftp(self):
+ # Testing the same URL twice exercises the caching in CacheFTPHandler
urls = [
'ftp://www.pythontest.net/README',
+ 'ftp://www.pythontest.net/README',
('ftp://www.pythontest.net/non-existent-file',
None, urllib.error.URLError),
]
diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 19e2e5bd33..5314b3f260 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -2475,7 +2475,13 @@ class ftpwrapper:
return (ftpobj, retrlen)
def endtransfer(self):
+ if not self.busy:
+ return
self.busy = 0
+ try:
+ self.ftp.voidresp()
+ except ftperrors():
+ pass
def close(self):
self.keepalive = False