Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 836e9aa

Browse files
committed
fix #13563: make use of with statement in ftplib.py where needed
1 parent 313b2ad commit 836e9aa

1 file changed

Lines changed: 5 additions & 20 deletions

File tree

Lib/ftplib.py

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)