From 417ae7cf837835051f53439863acf47e51453ca1 Mon Sep 17 00:00:00 2001 From: "giampaolo.rodola" Date: Wed, 30 Jun 2010 17:50:20 +0000 Subject: [PATCH] Merged revisions 82407 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ................ r82407 | giampaolo.rodola | 2010-06-30 19:47:39 +0200 (mer, 30 giu 2010) | 9 lines Merged revisions 82404 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r82404 | giampaolo.rodola | 2010-06-30 19:38:28 +0200 (mer, 30 giu 2010) | 1 line fix issue #6589: cleanup asyncore.socket_map if smtpd.SMTPServer constructor raises an exception ........ ................ git-svn-id: http://svn.python.org/projects/python/branches/release31-maint@82408 6015fed2-1504-0410-9fe1-9d1591cc4771 --- Lib/smtpd.py | 21 +++++++++++++-------- Misc/NEWS | 3 +++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Lib/smtpd.py b/Lib/smtpd.py index 3dc979334f..76df67355a 100755 --- a/Lib/smtpd.py +++ b/Lib/smtpd.py @@ -274,14 +274,19 @@ 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('%s started at %s\n\tLocal addr: %s\n\tRemote addr:%s' % ( - self.__class__.__name__, time.ctime(time.time()), - localaddr, remoteaddr), file=DEBUGSTREAM) + 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: + self.close() + raise + else: + print('%s started at %s\n\tLocal addr: %s\n\tRemote addr:%s' % ( + self.__class__.__name__, time.ctime(time.time()), + localaddr, remoteaddr), file=DEBUGSTREAM) def handle_accept(self): conn, addr = self.accept() diff --git a/Misc/NEWS b/Misc/NEWS index 5be3e1cf35..e72019696c 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -67,6 +67,9 @@ C-API Library ------- +- Issue #6589: cleanup asyncore.socket_map in case smtpd.SMTPServer constructor + raises an exception. + - Issue #9075: In the ssl module, remove the setting of a ``debug`` flag on an OpenSSL structure. -- 2.11.4.GIT