From: MinRK Date: Thu, 28 Jun 2012 04:08:12 +0000 (-0700) Subject: set SO_EXCLUSIVEADDRUSER on Windows instead of SO_REUSEADDR X-Git-Tag: v2.4.0~45^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4e152b54d9b3c43923cb4280dda476eb72dbd644;p=thirdparty%2Ftornado.git set SO_EXCLUSIVEADDRUSER on Windows instead of SO_REUSEADDR closes #550 --- diff --git a/tornado/netutil.py b/tornado/netutil.py index d06a176b4..80918e797 100644 --- a/tornado/netutil.py +++ b/tornado/netutil.py @@ -252,7 +252,10 @@ def bind_sockets(port, address=None, family=socket.AF_UNSPEC, backlog=128): af, socktype, proto, canonname, sockaddr = res sock = socket.socket(af, socktype, proto) set_close_exec(sock.fileno()) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + if os.name == 'nt': + sock.setsockopt(socket.SOL_SOCKET, socket.SO_EXCLUSIVEADDRUSE, 1) + else: + sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) if af == socket.AF_INET6: # On linux, ipv6 sockets accept ipv4 too by default, # but this makes it impossible to bind to both