@@ -406,13 +406,12 @@ def retrbinary(self, cmd, callback, blocksize=8192, rest=None):
406406 The response code.
407407 """
408408 self .voidcmd ('TYPE I' )
409- conn = self .transfercmd (cmd , rest )
410- while 1 :
411- data = conn .recv (blocksize )
412- if not data :
413- break
414- callback (data )
415- conn .close ()
409+ with self .transfercmd (cmd , rest ) as conn :
410+ while 1 :
411+ data = conn .recv (blocksize )
412+ if not data :
413+ break
414+ callback (data )
416415 return self .voidresp ()
417416
418417 def retrlines (self , cmd , callback = None ):
@@ -429,20 +428,18 @@ def retrlines(self, cmd, callback = None):
429428 """
430429 if callback is None : callback = print_line
431430 resp = self .sendcmd ('TYPE A' )
432- conn = self .transfercmd (cmd )
433- fp = conn .makefile ('r' , encoding = self .encoding )
434- while 1 :
435- line = fp .readline ()
436- if self .debugging > 2 : print ('*retr*' , repr (line ))
437- if not line :
438- break
439- if line [- 2 :] == CRLF :
440- line = line [:- 2 ]
441- elif line [- 1 :] == '\n ' :
442- line = line [:- 1 ]
443- callback (line )
444- fp .close ()
445- conn .close ()
431+ with self .transfercmd (cmd ) as conn , \
432+ conn .makefile ('r' , encoding = self .encoding ) as fp :
433+ while 1 :
434+ line = fp .readline ()
435+ if self .debugging > 2 : print ('*retr*' , repr (line ))
436+ if not line :
437+ break
438+ if line [- 2 :] == CRLF :
439+ line = line [:- 2 ]
440+ elif line [- 1 :] == '\n ' :
441+ line = line [:- 1 ]
442+ callback (line )
446443 return self .voidresp ()
447444
448445 def storbinary (self , cmd , fp , blocksize = 8192 , callback = None , rest = None ):
@@ -461,13 +458,12 @@ def storbinary(self, cmd, fp, blocksize=8192, callback=None, rest=None):
461458 The response code.
462459 """
463460 self .voidcmd ('TYPE I' )
464- conn = self .transfercmd (cmd , rest )
465- while 1 :
466- buf = fp .read (blocksize )
467- if not buf : break
468- conn .sendall (buf )
469- if callback : callback (buf )
470- conn .close ()
461+ with self .transfercmd (cmd , rest ) as conn :
462+ while 1 :
463+ buf = fp .read (blocksize )
464+ if not buf : break
465+ conn .sendall (buf )
466+ if callback : callback (buf )
471467 return self .voidresp ()
472468
473469 def storlines (self , cmd , fp , callback = None ):
@@ -483,16 +479,15 @@ def storlines(self, cmd, fp, callback=None):
483479 The response code.
484480 """
485481 self .voidcmd ('TYPE A' )
486- conn = self .transfercmd (cmd )
487- while 1 :
488- buf = fp .readline ()
489- if not buf : break
490- if buf [- 2 :] != B_CRLF :
491- if buf [- 1 ] in B_CRLF : buf = buf [:- 1 ]
492- buf = buf + B_CRLF
493- conn .sendall (buf )
494- if callback : callback (buf )
495- conn .close ()
482+ with self .transfercmd (cmd ) as conn :
483+ while 1 :
484+ buf = fp .readline ()
485+ if not buf : break
486+ if buf [- 2 :] != B_CRLF :
487+ if buf [- 1 ] in B_CRLF : buf = buf [:- 1 ]
488+ buf = buf + B_CRLF
489+ conn .sendall (buf )
490+ if callback : callback (buf )
496491 return self .voidresp ()
497492
498493 def acct (self , password ):
0 commit comments