merge heads
diff --git a/Lib/asyncore.py b/Lib/asyncore.py
index f146643..75481dd 100644
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -397,11 +397,12 @@
         self.accepting = False
         self.connecting = False
         self.del_channel()
-        try:
-            self.socket.close()
-        except OSError as why:
-            if why.args[0] not in (ENOTCONN, EBADF):
-                raise
+        if self.socket is not None:
+            try:
+                self.socket.close()
+            except OSError as why:
+                if why.args[0] not in (ENOTCONN, EBADF):
+                    raise
 
     # cheap inheritance, used to pass all other attribute
     # references to the underlying socket object.