[tor-commits] [tor/release-0.2.2] Merge remote-tracking branch 'public/bug2850' into maint-0.2.2

nickm at torproject.org nickm at torproject.org
Mon May 16 18:54:56 UTC 2011


commit 919bf6ff3cfb1387f3f9ecf9ce97d8e95e330a05
Merge: 83fe07d aba7bb7
Author: Nick Mathewson <nickm at torproject.org>
Date:   Mon May 16 11:10:17 2011 -0400

    Merge remote-tracking branch 'public/bug2850' into maint-0.2.2
    
    Fixed a trivial conflict where this and the ControlSocketGroupWritable
    code both added different functions to the same part of connection.c.
    
    Conflicts:
    	src/or/connection.c

 changes/bug2850     |    5 +++++
 src/or/connection.c |   34 +++++++++++++++++++++++-----------
 2 files changed, 28 insertions(+), 11 deletions(-)

diff --cc src/or/connection.c
index b7d6fe4,e90e13f..5054909
--- a/src/or/connection.c
+++ b/src/or/connection.c
@@@ -853,43 -851,25 +853,62 @@@ warn_too_many_conns(void
    }
  }
  
 +#ifdef HAVE_SYS_UN_H
 +/** Check whether we should be willing to open an AF_UNIX socket in
 + * <b>path</b>.  Return 0 if we should go ahead and -1 if we shouldn't. */
 +static int
 +check_location_for_unix_socket(or_options_t *options, const char *path)
 +{
 +  int r = -1;
 +  char *p = tor_strdup(path);
 +  cpd_check_t flags = CPD_CHECK_MODE_ONLY;
 +  if (get_parent_directory(p)<0)
 +    goto done;
 +
 +  if (options->ControlSocketsGroupWritable)
 +    flags |= CPD_GROUP_OK;
 +
 +  if (check_private_dir(p, flags) < 0) {
 +    char *escpath, *escdir;
 +    escpath = esc_for_log(path);
 +    escdir = esc_for_log(p);
 +    log_warn(LD_GENERAL, "Before Tor can create a control socket in %s, the "
 +             "directory %s needs to exist, and to be accessible only by the "
 +             "user%s account that is running Tor.  (On some Unix systems, "
 +             "anybody who can list a socket can conect to it, so Tor is "
 +             "being careful.)", escpath, escdir,
 +             options->ControlSocketsGroupWritable ? " and group" : "");
 +    tor_free(escpath);
 +    tor_free(escdir);
 +    goto done;
 +  }
 +
 +  r = 0;
 + done:
 +  tor_free(p);
 +  return r;
 +}
 +#endif
 +
+ /** Tell the TCP stack that it shouldn't wait for a long time after
+  * <b>sock</b> has closed before reusing its port. */
+ static void
+ make_socket_reuseable(int sock)
+ {
+ #ifdef MS_WINDOWS
+   (void) sock;
+ #else
+   int one=1;
+ 
+   /* REUSEADDR on normal places means you can rebind to the port
+    * right after somebody else has let it go. But REUSEADDR on win32
+    * means you can bind to the port _even when somebody else
+    * already has it bound_. So, don't do that on Win32. */
+   setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*) &one,
+              (socklen_t)sizeof(one));
+ #endif
+ }
+ 
  /** Bind a new non-blocking socket listening to the socket described
   * by <b>listensockaddr</b>.
   *
@@@ -912,11 -891,7 +931,8 @@@ connection_create_listener(const struc
    }
  
    if (listensockaddr->sa_family == AF_INET) {
 +    tor_addr_t addr;
      int is_tcp = (type != CONN_TYPE_AP_DNS_LISTENER);
- #ifndef MS_WINDOWS
-     int one=1;
- #endif
      if (is_tcp)
        start_reading = 1;
  





More information about the tor-commits mailing list