diff options
Diffstat (limited to 'Lib/urllib/request.py')
| -rw-r--r-- | Lib/urllib/request.py | 10 | 
1 files changed, 7 insertions, 3 deletions
| diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index a501e37..0aa7a77 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 | 
