Commit d64146c4 authored by Ivan Mokeev's avatar Ivan Mokeev Committed by Victor Stinner

Fix socket leaks (#351)

* Fix socket leaks

* Fixed sockets leak
parent 9c2c42c2
......@@ -412,11 +412,13 @@ class FTP:
"""
self.voidcmd('TYPE I')
conn = self.transfercmd(cmd, rest)
try:
while 1:
data = conn.recv(blocksize)
if not data:
break
callback(data)
finally:
conn.close()
return self.voidresp()
......@@ -435,6 +437,8 @@ class FTP:
if callback is None: callback = print_line
resp = self.sendcmd('TYPE A')
conn = self.transfercmd(cmd)
fp = None
try:
fp = conn.makefile('rb')
while 1:
line = fp.readline(self.maxline + 1)
......@@ -448,6 +452,8 @@ class FTP:
elif line[-1:] == '\n':
line = line[:-1]
callback(line)
finally:
if fp:
fp.close()
conn.close()
return self.voidresp()
......@@ -469,11 +475,13 @@ class FTP:
"""
self.voidcmd('TYPE I')
conn = self.transfercmd(cmd, rest)
try:
while 1:
buf = fp.read(blocksize)
if not buf: break
conn.sendall(buf)
if callback: callback(buf)
finally:
conn.close()
return self.voidresp()
......@@ -491,6 +499,7 @@ class FTP:
"""
self.voidcmd('TYPE A')
conn = self.transfercmd(cmd)
try:
while 1:
buf = fp.readline(self.maxline + 1)
if len(buf) > self.maxline:
......@@ -501,6 +510,7 @@ class FTP:
buf = buf + CRLF
conn.sendall(buf)
if callback: callback(buf)
finally:
conn.close()
return self.voidresp()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment