[Python-checkins] cpython: fix #13563: make use of with statement in ftplib.py where needed

giampaolo.rodola python-checkins at python.org
Sat Dec 10 21:25:09 CET 2011


http://hg.python.org/cpython/rev/6cd736239b8a
changeset:   73929:6cd736239b8a
user:        Giampaolo Rodola' <g.rodola at gmail.com>
date:        Sat Dec 10 21:25:04 2011 +0100
summary:
  fix #13563: make use of with statement in ftplib.py where needed

files:
  Lib/ftplib.py |  25 +++++--------------------
  1 files changed, 5 insertions(+), 20 deletions(-)


diff --git a/Lib/ftplib.py b/Lib/ftplib.py
--- a/Lib/ftplib.py
+++ b/Lib/ftplib.py
@@ -359,8 +359,7 @@
                 conn.close()
                 raise
         else:
-            sock = self.makeport()
-            try:
+            with self.makeport() as sock:
                 if rest is not None:
                     self.sendcmd("REST %s" % rest)
                 resp = self.sendcmd(cmd)
@@ -372,8 +371,6 @@
                 conn, sockaddr = sock.accept()
                 if self.timeout is not _GLOBAL_DEFAULT_TIMEOUT:
                     conn.settimeout(self.timeout)
-            finally:
-                sock.close()
         if resp[:3] == '150':
             # this is conditional in case we received a 125
             size = parse150(resp)
@@ -753,8 +750,7 @@
 
         def retrbinary(self, cmd, callback, blocksize=8192, rest=None):
             self.voidcmd('TYPE I')
-            conn = self.transfercmd(cmd, rest)
-            try:
+            with self.transfercmd(cmd, rest) as conn:
                 while 1:
                     data = conn.recv(blocksize)
                     if not data:
@@ -763,8 +759,6 @@
                 # shutdown ssl layer
                 if isinstance(conn, ssl.SSLSocket):
                     conn.unwrap()
-            finally:
-                conn.close()
             return self.voidresp()
 
         def retrlines(self, cmd, callback = None):
@@ -772,7 +766,7 @@
             resp = self.sendcmd('TYPE A')
             conn = self.transfercmd(cmd)
             fp = conn.makefile('r', encoding=self.encoding)
-            try:
+            with fp, conn:
                 while 1:
                     line = fp.readline()
                     if self.debugging > 2: print('*retr*', repr(line))
@@ -786,15 +780,11 @@
                 # shutdown ssl layer
                 if isinstance(conn, ssl.SSLSocket):
                     conn.unwrap()
-            finally:
-                fp.close()
-                conn.close()
             return self.voidresp()
 
         def storbinary(self, cmd, fp, blocksize=8192, callback=None, rest=None):
             self.voidcmd('TYPE I')
-            conn = self.transfercmd(cmd, rest)
-            try:
+            with self.transfercmd(cmd, rest) as conn:
                 while 1:
                     buf = fp.read(blocksize)
                     if not buf: break
@@ -803,14 +793,11 @@
                 # shutdown ssl layer
                 if isinstance(conn, ssl.SSLSocket):
                     conn.unwrap()
-            finally:
-                conn.close()
             return self.voidresp()
 
         def storlines(self, cmd, fp, callback=None):
             self.voidcmd('TYPE A')
-            conn = self.transfercmd(cmd)
-            try:
+            with self.transfercmd(cmd) as conn:
                 while 1:
                     buf = fp.readline()
                     if not buf: break
@@ -822,8 +809,6 @@
                 # shutdown ssl layer
                 if isinstance(conn, ssl.SSLSocket):
                     conn.unwrap()
-            finally:
-                conn.close()
             return self.voidresp()
 
         def abort(self):

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list