mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-28 06:13:31 +01:00
set SO_REUSEADDR before we bind, not after
resolves bug 4950 (fixes a bug on commit aba7bb705a
from #2850)
This commit is contained in:
parent
efb60e2132
commit
247a21379a
6
changes/bug4950
Normal file
6
changes/bug4950
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
o Major bugfixes:
|
||||||
|
- Set the SO_REUSEADDR socket option before we call bind() on outgoing
|
||||||
|
connections. This change should allow busy exit relays to stop
|
||||||
|
running out of available sockets as quickly. Fixes bug 4950;
|
||||||
|
bugfix on 0.2.2.26-beta.
|
||||||
|
|
@ -1338,6 +1338,8 @@ connection_connect(connection_t *conn, const char *address,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
make_socket_reuseable(s);
|
||||||
|
|
||||||
if (options->OutboundBindAddress && !tor_addr_is_loopback(addr)) {
|
if (options->OutboundBindAddress && !tor_addr_is_loopback(addr)) {
|
||||||
struct sockaddr_in ext_addr;
|
struct sockaddr_in ext_addr;
|
||||||
|
|
||||||
@ -1372,8 +1374,6 @@ connection_connect(connection_t *conn, const char *address,
|
|||||||
log_debug(LD_NET, "Connecting to %s:%u.",
|
log_debug(LD_NET, "Connecting to %s:%u.",
|
||||||
escaped_safe_str_client(address), port);
|
escaped_safe_str_client(address), port);
|
||||||
|
|
||||||
make_socket_reuseable(s);
|
|
||||||
|
|
||||||
if (connect(s, dest_addr, (socklen_t)dest_addr_len) < 0) {
|
if (connect(s, dest_addr, (socklen_t)dest_addr_len) < 0) {
|
||||||
int e = tor_socket_errno(s);
|
int e = tor_socket_errno(s);
|
||||||
if (!ERRNO_IS_CONN_EINPROGRESS(e)) {
|
if (!ERRNO_IS_CONN_EINPROGRESS(e)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user