Mir wurde empfohlen asyncore.dispatcher.set_reuse_addr() zu verwenden. Das Ganze endete in einer Endlosschleife. Weitere Forschungen ergaben, dass smtpd.SMTPServer bereits set_reuse_addr() benutzt, bevor bind() aufgerufen wird. Hab meinen überflüssigen Aufruf also wieder entfernt und der alte Fehler kommt nun wieder[…]
File "/usr/lib/python2.5/smtpd.py", line 280, in __init__
self.bind(localaddr)
File "/usr/lib/python2.5/asyncore.py", line 303, in bind
return self.socket.bind(addr)
File "<string>", line 1, in bind
socket.error: (98, 'Address already in use')
Modul smtpd, Zeilen 272 bis 285:
Code: Alles auswählen
class SMTPServer(asyncore.dispatcher):
def __init__(self, localaddr, remoteaddr):
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)
Wieso kommt der Fehler trotzdem? Und: Wie kann ich das lösen?