[tor-commits] [tor] 02/03: Merge branch 'maint-0.4.7'

gitolite role git at cupani.torproject.org
Tue Dec 20 14:12:05 UTC 2022


This is an automated email from the git hooks/post-receive script.

dgoulet pushed a commit to branch main
in repository tor.

commit 713efae94bf3d9038c83f09a6d808b087144a5d6
Merge: cfdc9f9d29 1d9166c8c9
Author: David Goulet <dgoulet at torproject.org>
AuthorDate: Tue Dec 20 09:09:47 2022 -0500

    Merge branch 'maint-0.4.7'

 src/core/mainloop/connection.c | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --cc src/core/mainloop/connection.c
index 4c9569ad5b,cf25213cb1..d99498d6be
--- a/src/core/mainloop/connection.c
+++ b/src/core/mainloop/connection.c
@@@ -2233,6 -2222,20 +2233,30 @@@ connection_connect_sockaddr,(connection
               tor_socket_strerror(errno));
    }
  
 -  /*
 -   * We've got the socket open; give the OOS handler a chance to check
 -   * against configured maximum socket number, but tell it no exhaustion
 -   * failure.
 -   */
 -  connection_check_oos(get_n_open_sockets(), 0);
++#ifdef IP_BIND_ADDRESS_NO_PORT
++  static int try_ip_bind_address_no_port = 1;
++  if (bindaddr && try_ip_bind_address_no_port &&
++      setsockopt(s, SOL_IP, IP_BIND_ADDRESS_NO_PORT, &(int){1}, sizeof(int))) {
++    if (errno == EINVAL) {
++      log_notice(LD_NET, "Tor was built with support for "
++                         "IP_BIND_ADDRESS_NO_PORT, but the current kernel "
++                         "doesn't support it. This might cause Tor to run out "
++                         "of ephemeral ports more quickly.");
++      try_ip_bind_address_no_port = 0;
++    } else {
++      log_warn(LD_NET, "Error setting IP_BIND_ADDRESS_NO_PORT on new "
++                       "connection: %s", tor_socket_strerror(errno));
++    }
++  }
++#endif
+ 
+   /* From ip(7): Inform the kernel to not reserve an ephemeral port when using
+    * bind(2) with a port number of 0. The port will later be automatically
+    * chosen at connect(2) time, in a way that allows sharing a source port as
+    * long as the 4-tuple is unique.
+    *
+    * This is needed for relays using OutboundBindAddresses because the port
+    * value in the bind address is set to 0. */
  #ifdef IP_BIND_ADDRESS_NO_PORT
    static int try_ip_bind_address_no_port = 1;
    if (bindaddr && try_ip_bind_address_no_port &&

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the tor-commits mailing list