Merged revisions 82407 via svnmerge from
authorGiampaolo Rodolà <g.rodola@gmail.com>
Wed, 30 Jun 2010 17:50:20 +0000 (17:50 +0000)
committerGiampaolo Rodolà <g.rodola@gmail.com>
Wed, 30 Jun 2010 17:50:20 +0000 (17:50 +0000)
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
  ........
................

Lib/smtpd.py
Misc/NEWS

index 3dc979334f83f582b9daee14536651e19f857a40..76df67355a48a76a00f64c49d5beecaf724894c4 100755 (executable)
@@ -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()
index 5be3e1cf35bb50d4f26af06df2738fe0e95304ea..e72019696c1940c70c398613914a4e356f316c9d 100644 (file)
--- 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.