From 2024acd36ffa0b39229425843bfae572b50ef6e3 Mon Sep 17 00:00:00 2001
From: Senthil Kumaran <orsenthil@gmail.com>
Date: Thu, 24 Mar 2011 11:46:19 +0800
Subject: [PATCH] issue10883 - Silence some ftp related ResourceWarnings in
 test_urllib2net. Patch by Nadeem Vawda.

---
 Lib/urllib/request.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py
index 4d3648d0f2..53e8107c56 100644
--- a/Lib/urllib/request.py
+++ b/Lib/urllib/request.py
@@ -2136,7 +2136,7 @@ class ftpwrapper:
             # Try to retrieve as a file
             try:
                 cmd = 'RETR ' + file
-                conn = self.ftp.ntransfercmd(cmd)
+                conn, retrlen = self.ftp.ntransfercmd(cmd)
             except ftplib.error_perm as reason:
                 if str(reason)[:3] != '550':
                     raise URLError('ftp error', reason).with_traceback(
@@ -2157,10 +2157,14 @@ class ftpwrapper:
                 cmd = 'LIST ' + file
             else:
                 cmd = 'LIST'
-            conn = self.ftp.ntransfercmd(cmd)
+            conn, retrlen = self.ftp.ntransfercmd(cmd)
         self.busy = 1
+
+        ftpobj = addclosehook(conn.makefile('rb'), self.endtransfer)
+        conn.close()
         # Pass back both a suitably decorated object and a retrieval length
-        return (addclosehook(conn[0].makefile('rb'), self.endtransfer), conn[1])
+        return (ftpobj, retrlen)
+
     def endtransfer(self):
         if not self.busy:
             return
-- 
2.40.0