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
........
This commit is contained in:
Giampaolo Rodolà 2010-06-30 17:41:25 +00:00
parent 9f11f39758
commit 1daf7aa2b2
2 changed files with 18 additions and 9 deletions

View file

@ -274,15 +274,21 @@ class SMTPServer(asyncore.dispatcher):
self._localaddr = localaddr self._localaddr = localaddr
self._remoteaddr = remoteaddr self._remoteaddr = remoteaddr
asyncore.dispatcher.__init__(self) asyncore.dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM) try:
# try to re-use a server port if possible self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr() # try to re-use a server port if possible
self.bind(localaddr) self.set_reuse_addr()
self.listen(5) self.bind(localaddr)
print >> DEBUGSTREAM, \ self.listen(5)
'%s started at %s\n\tLocal addr: %s\n\tRemote addr:%s' % ( except:
self.__class__.__name__, time.ctime(time.time()), # cleanup asyncore.socket_map before raising
localaddr, remoteaddr) 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): def handle_accept(self):
conn, addr = self.accept() conn, addr = self.accept()

View file

@ -73,6 +73,9 @@ C-API
Library Library
------- -------
- Issue #6589: cleanup asyncore.socket_map in case smtpd.SMTPServer constructor
raises an exception.
- Issue #9125: Add recognition of 'except ... as ...' syntax to parser module. - Issue #9125: Add recognition of 'except ... as ...' syntax to parser module.
- Issue #9085: email package version number bumped to its correct - Issue #9085: email package version number bumped to its correct