fix issue #6589: cleanup asyncore.socket_map if smtpd.SMTPServer constructor raises an exception
This commit is contained in:
parent
10947a6416
commit
e00e2f0082
24
Lib/smtpd.py
24
Lib/smtpd.py
|
@ -274,15 +274,21 @@ class SMTPServer(asyncore.dispatcher):
|
|||
self._localaddr = localaddr
|
||||
self._remoteaddr = remoteaddr
|
||||
asyncore.dispatcher.__init__(self)
|
||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
# try to re-use a server port if possible
|
||||
self.set_reuse_addr()
|
||||
self.bind(localaddr)
|
||||
self.listen(5)
|
||||
print >> DEBUGSTREAM, \
|
||||
'%s started at %s\n\tLocal addr: %s\n\tRemote addr:%s' % (
|
||||
self.__class__.__name__, time.ctime(time.time()),
|
||||
localaddr, remoteaddr)
|
||||
try:
|
||||
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
# try to re-use a server port if possible
|
||||
self.set_reuse_addr()
|
||||
self.bind(localaddr)
|
||||
self.listen(5)
|
||||
except:
|
||||
# cleanup asyncore.socket_map before raising
|
||||
self.close()
|
||||
raise
|
||||
else:
|
||||
print >> DEBUGSTREAM, \
|
||||
'%s started at %s\n\tLocal addr: %s\n\tRemote addr:%s' % (
|
||||
self.__class__.__name__, time.ctime(time.time()),
|
||||
localaddr, remoteaddr)
|
||||
|
||||
def handle_accept(self):
|
||||
conn, addr = self.accept()
|
||||
|
|
|
@ -51,6 +51,9 @@ Build
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #6589: cleanup asyncore.socket_map in case smtpd.SMTPServer constructor
|
||||
raises an exception.
|
||||
|
||||
- Issue #8959: fix regression caused by using unmodified libffi
|
||||
library on Windows. ctypes does now again check the stack before
|
||||
and after calling foreign functions.
|
||||
|
|
Loading…
Reference in New Issue