diff options
| -rw-r--r-- | Lib/asyncore.py | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/Lib/asyncore.py b/Lib/asyncore.py index f63a83eeba..5f602195be 100644 --- a/Lib/asyncore.py +++ b/Lib/asyncore.py @@ -263,14 +263,20 @@ class dispatcher:      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  | 
