From: Roger Dingledine Date: Thu, 24 Mar 2005 23:20:06 +0000 (+0000) Subject: REUSEADDR on normal places means you can rebind to the port X-Git-Tag: tor-0.1.0.1-rc~43 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd37c9a3bd76085d5ac7daff2934e9705c20ac89;p=thirdparty%2Ftor.git REUSEADDR on normal places means you can rebind to the port right after somebody else has let it go. But REUSEADDR on win32 means to let you bind to the port _even when somebody else already has it bound_. So, don't do that on Win32. svn:r3867 --- diff --git a/src/or/connection.c b/src/or/connection.c index 81e42236c1..acf3465a2e 100644 --- a/src/or/connection.c +++ b/src/or/connection.c @@ -401,7 +401,9 @@ static int connection_create_listener(const char *bindaddress, uint16_t bindport uint16_t usePort; uint32_t addr; int s; /* the socket we're going to make */ +#ifndef MS_WINDOWS int one=1; +#endif memset(&bindaddr,0,sizeof(struct sockaddr_in)); if (parse_addr_port(bindaddress, NULL, &addr, &usePort)<0) { @@ -425,7 +427,13 @@ static int connection_create_listener(const char *bindaddress, uint16_t bindport return -1; } +#ifndef MS_WINDOWS + /* REUSEADDR on normal places means you can rebind to the port + * right after somebody else has let it go. But REUSEADDR on win32 + * means to let you bind to the port _even when somebody else + * already has it bound_. So, don't do that on Win32. */ setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void*) &one, sizeof(one)); +#endif if (bind(s,(struct sockaddr *)&bindaddr,sizeof(bindaddr)) < 0) { log_fn(LOG_WARN,"Could not bind to port %u: %s",usePort,