[Patch #982681] Apply this patch correctly; makes set_reuse_addr() work on Windows
diff --git a/Lib/asyncore.py b/Lib/asyncore.py
index f63a83e..5f60219 100644
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -263,14 +263,20 @@
     def set_reuse_addr(self):
         # try to re-use a server port if possible
         try:
+            # Windows SO_REUSEADDR is very broken (from a unixy perspective)
+            if sys.platform == 'win32':
+                reuse_constant = socket.SO_EXCLUSIVEADDRUSE
+            else:
+                reuse_constant = socket.SO_REUSEADDR
+                
             self.socket.setsockopt(
-                socket.SOL_SOCKET, socket.SO_REUSEADDR,
+                socket.SOL_SOCKET, reuse_constant,
                 self.socket.getsockopt(socket.SOL_SOCKET,
-                                       socket.SO_REUSEADDR) | 1
+                                       reuse_constant) | 1
                 )
         except socket.error:
             pass
-
+        
     # ==================================================
     # predicates for select()
     # these are used as filters for the lists of sockets