Fix Issue 6706: return None on connect() in case of EWOULDBLOCK/ECONNABORTED error.
diff --git a/Lib/smtpd.py b/Lib/smtpd.py
index 57ad089..ab3e0e2 100755
--- a/Lib/smtpd.py
+++ b/Lib/smtpd.py
@@ -297,22 +297,11 @@
localaddr, remoteaddr), file=DEBUGSTREAM)
def handle_accept(self):
- try:
- conn, addr = self.accept()
- except TypeError:
- # sometimes accept() might return None
- return
- except socket.error as err:
- # ECONNABORTED might be thrown
- if err.args[0] != errno.ECONNABORTED:
- raise
- return
- else:
- # sometimes addr == None instead of (ip, port)
- if addr == None:
- return
- print('Incoming connection from %s' % repr(addr), file=DEBUGSTREAM)
- channel = SMTPChannel(self, conn, addr)
+ pair = self.accept()
+ if pair is not None:
+ conn, addr = pair
+ print('Incoming connection from %s' % repr(addr), file=DEBUGSTREAM)
+ channel = SMTPChannel(self, conn, addr)
# API for "doing something useful with the message"
def process_message(self, peer, mailfrom, rcpttos, data):