@@ -359,8 +359,7 @@ def ntransfercmd(self, cmd, rest=None):
359359 conn .close ()
360360 raise
361361 else :
362- sock = self .makeport ()
363- try :
362+ with self .makeport () as sock :
364363 if rest is not None :
365364 self .sendcmd ("REST %s" % rest )
366365 resp = self .sendcmd (cmd )
@@ -372,8 +371,6 @@ def ntransfercmd(self, cmd, rest=None):
372371 conn , sockaddr = sock .accept ()
373372 if self .timeout is not _GLOBAL_DEFAULT_TIMEOUT :
374373 conn .settimeout (self .timeout )
375- finally :
376- sock .close ()
377374 if resp [:3 ] == '150' :
378375 # this is conditional in case we received a 125
379376 size = parse150 (resp )
@@ -753,8 +750,7 @@ def ntransfercmd(self, cmd, rest=None):
753750
754751 def retrbinary (self , cmd , callback , blocksize = 8192 , rest = None ):
755752 self .voidcmd ('TYPE I' )
756- conn = self .transfercmd (cmd , rest )
757- try :
753+ with self .transfercmd (cmd , rest ) as conn :
758754 while 1 :
759755 data = conn .recv (blocksize )
760756 if not data :
@@ -763,16 +759,14 @@ def retrbinary(self, cmd, callback, blocksize=8192, rest=None):
763759 # shutdown ssl layer
764760 if isinstance (conn , ssl .SSLSocket ):
765761 conn .unwrap ()
766- finally :
767- conn .close ()
768762 return self .voidresp ()
769763
770764 def retrlines (self , cmd , callback = None ):
771765 if callback is None : callback = print_line
772766 resp = self .sendcmd ('TYPE A' )
773767 conn = self .transfercmd (cmd )
774768 fp = conn .makefile ('r' , encoding = self .encoding )
775- try :
769+ with fp , conn :
776770 while 1 :
777771 line = fp .readline ()
778772 if self .debugging > 2 : print ('*retr*' , repr (line ))
@@ -786,15 +780,11 @@ def retrlines(self, cmd, callback = None):
786780 # shutdown ssl layer
787781 if isinstance (conn , ssl .SSLSocket ):
788782 conn .unwrap ()
789- finally :
790- fp .close ()
791- conn .close ()
792783 return self .voidresp ()
793784
794785 def storbinary (self , cmd , fp , blocksize = 8192 , callback = None , rest = None ):
795786 self .voidcmd ('TYPE I' )
796- conn = self .transfercmd (cmd , rest )
797- try :
787+ with self .transfercmd (cmd , rest ) as conn :
798788 while 1 :
799789 buf = fp .read (blocksize )
800790 if not buf : break
@@ -803,14 +793,11 @@ def storbinary(self, cmd, fp, blocksize=8192, callback=None, rest=None):
803793 # shutdown ssl layer
804794 if isinstance (conn , ssl .SSLSocket ):
805795 conn .unwrap ()
806- finally :
807- conn .close ()
808796 return self .voidresp ()
809797
810798 def storlines (self , cmd , fp , callback = None ):
811799 self .voidcmd ('TYPE A' )
812- conn = self .transfercmd (cmd )
813- try :
800+ with self .transfercmd (cmd ) as conn :
814801 while 1 :
815802 buf = fp .readline ()
816803 if not buf : break
@@ -822,8 +809,6 @@ def storlines(self, cmd, fp, callback=None):
822809 # shutdown ssl layer
823810 if isinstance (conn , ssl .SSLSocket ):
824811 conn .unwrap ()
825- finally :
826- conn .close ()
827812 return self .voidresp ()
828813
829814 def abort (self ):
0 commit comments