]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
REUSEADDR on normal places means you can rebind to the port
authorRoger Dingledine <arma@torproject.org>
Thu, 24 Mar 2005 23:20:06 +0000 (23:20 +0000)
committerRoger Dingledine <arma@torproject.org>
Thu, 24 Mar 2005 23:20:06 +0000 (23:20 +0000)
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

src/or/connection.c

index 81e42236c1325d7b326c88f52937c483c5a4e81f..acf3465a2e1918365222230dcc28c8f400b62d9b 100644 (file)
@@ -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,