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

Skip to content

Commit 322c0d1

Browse files
committed
Only close sockets if they have been created. Reported by Blake Winton.
1 parent fb16378 commit 322c0d1

5 files changed

Lines changed: 15 additions & 6 deletions

File tree

Lib/ftplib.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ def connect(self, host = '', port = 0):
122122
self.sock = socket.socket(af, socktype, proto)
123123
self.sock.connect(sa)
124124
except socket.error, msg:
125-
self.sock.close()
125+
if self.sock:
126+
self.sock.close()
126127
self.sock = None
127128
continue
128129
break
@@ -272,13 +273,15 @@ def sendeprt(self, host, port):
272273
def makeport(self):
273274
'''Create a new socket and send a PORT command for it.'''
274275
msg = "getaddrinfo returns an empty list"
276+
sock = None
275277
for res in socket.getaddrinfo(None, 0, self.af, socket.SOCK_STREAM, 0, socket.AI_PASSIVE):
276278
af, socktype, proto, canonname, sa = res
277279
try:
278280
sock = socket.socket(af, socktype, proto)
279281
sock.bind(sa)
280282
except socket.error, msg:
281-
sock.close()
283+
if sock:
284+
sock.close()
282285
sock = None
283286
continue
284287
break

Lib/httplib.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,8 @@ def connect(self):
368368
except socket.error, msg:
369369
if self.debuglevel > 0:
370370
print 'connect fail:', (self.host, self.port)
371-
self.sock.close()
371+
if self.sock:
372+
self.sock.close()
372373
self.sock = None
373374
continue
374375
break

Lib/poplib.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,15 @@ def __init__(self, host, port = POP3_PORT):
7676
self.host = host
7777
self.port = port
7878
msg = "getaddrinfo returns an empty list"
79+
self.sock = None
7980
for res in socket.getaddrinfo(self.host, self.port, 0, socket.SOCK_STREAM):
8081
af, socktype, proto, canonname, sa = res
8182
try:
8283
self.sock = socket.socket(af, socktype, proto)
8384
self.sock.connect(sa)
8485
except socket.error, msg:
85-
self.sock.close()
86+
if self.sock:
87+
self.sock.close()
8688
self.sock = None
8789
continue
8890
break

Lib/smtplib.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,7 @@ def connect(self, host='localhost', port = 0):
265265
if not port: port = SMTP_PORT
266266
if self.debuglevel > 0: print 'connect:', (host, port)
267267
msg = "getaddrinfo returns an empty list"
268+
self.sock = None
268269
for res in socket.getaddrinfo(host, port, 0, socket.SOCK_STREAM):
269270
af, socktype, proto, canonname, sa = res
270271
try:
@@ -273,7 +274,8 @@ def connect(self, host='localhost', port = 0):
273274
self.sock.connect(sa)
274275
except socket.error, msg:
275276
if self.debuglevel > 0: print 'connect fail:', (host, port)
276-
self.sock.close()
277+
if self.sock:
278+
self.sock.close()
277279
self.sock = None
278280
continue
279281
break

Lib/telnetlib.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,8 @@ def open(self, host, port=0):
210210
self.sock = socket.socket(af, socktype, proto)
211211
self.sock.connect(sa)
212212
except socket.error, msg:
213-
self.sock.close()
213+
if self.sock:
214+
self.sock.close()
214215
self.sock = None
215216
continue
216217
break

0 commit comments

Comments
 (0)