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:
parent
1cc6df97bc
commit
610aa4f07f
21
Lib/smtpd.py
21
Lib/smtpd.py
|
@ -274,14 +274,19 @@ 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('%s started at %s\n\tLocal addr: %s\n\tRemote addr:%s' % (
|
self.listen(5)
|
||||||
self.__class__.__name__, time.ctime(time.time()),
|
except:
|
||||||
localaddr, remoteaddr), file=DEBUGSTREAM)
|
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):
|
def handle_accept(self):
|
||||||
conn, addr = self.accept()
|
conn, addr = self.accept()
|
||||||
|
|
|
@ -460,6 +460,9 @@ C-API
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #6589: cleanup asyncore.socket_map in case smtpd.SMTPServer constructor
|
||||||
|
raises an exception.
|
||||||
|
|
||||||
- Issue #9110: Addition of ContextDecorator to contextlib, for creating APIs
|
- Issue #9110: Addition of ContextDecorator to contextlib, for creating APIs
|
||||||
that act as both context managers and decorators. contextmanager changes
|
that act as both context managers and decorators. contextmanager changes
|
||||||
to use ContextDecorator.
|
to use ContextDecorator.
|
||||||
|
|
Loading…
Reference in New Issue