fix issue #9129: added proper error handling when accepting new connections in SMTPServer.handle_accept
diff --git a/Lib/smtpd.py b/Lib/smtpd.py
index b408278..e8459f0 100755
--- a/Lib/smtpd.py
+++ b/Lib/smtpd.py
@@ -413,8 +413,21 @@
                 self.__class__.__name__, time.ctime(time.time()),
                 localaddr, remoteaddr), file=DEBUGSTREAM)
 
-    def handle_accept(self):
-        conn, addr = self.accept()
+    def handle_accept(self)
+        try:
+            conn, addr = self.accept()
+        except TypeError:
+            # sometimes accept() might return None
+            return
+        except socket.error, err:
+            # ECONNABORTED might be thrown
+            if err[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 = self.channel_class(self, conn, addr)