diff options
Diffstat (limited to 'src/net.cpp')
| -rw-r--r-- | src/net.cpp | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/src/net.cpp b/src/net.cpp index 35baf21..fed6123 100644 --- a/src/net.cpp +++ b/src/net.cpp | |||
| @@ -2038,11 +2038,14 @@ bool StartNode(string& strError) | |||
| 2038 | // IP address, and port for the socket that is being bound | 2038 | // IP address, and port for the socket that is being bound |
| 2039 | int nRetryLimit = 15; | 2039 | int nRetryLimit = 15; |
| 2040 | struct sockaddr_in sockaddr = addrLocalHost.GetSockAddr(); | 2040 | struct sockaddr_in sockaddr = addrLocalHost.GetSockAddr(); |
| 2041 | // Keep addrLocalHost as this node's advertised address, but listen on all | 2041 | // Managed Tor forwards hidden-service traffic to 127.0.0.1:<port>, which a |
| 2042 | // local interfaces. Managed Tor forwards hidden-service traffic to | 2042 | // LAN-only bind cannot receive -- so a node that advertises an onion |
| 2043 | // 127.0.0.1:<port>, and binding only to the LAN address made that onion | 2043 | // endpoint must listen on all local interfaces. Upstream 1.2.19 bound |
| 2044 | // endpoint unreachable even though the P2P listener was running. | 2044 | // INADDR_ANY unconditionally, which also widened the P2P listener of every |
| 2045 | sockaddr.sin_addr.s_addr = INADDR_ANY; | 2045 | // non-Tor node to VPN tunnels, docker bridges and secondary NICs. Keep the |
| 2046 | // wildcard bind conditional on actually having an onion endpoint. | ||
| 2047 | if (!BtfLocalOnionEndpoint().empty()) | ||
| 2048 | sockaddr.sin_addr.s_addr = INADDR_ANY; | ||
| 2046 | if (bind(hListenSocket, (struct sockaddr*)&sockaddr, sizeof(sockaddr)) == SOCKET_ERROR) | 2049 | if (bind(hListenSocket, (struct sockaddr*)&sockaddr, sizeof(sockaddr)) == SOCKET_ERROR) |
| 2047 | { | 2050 | { |
| 2048 | int nErr = WSAGetLastError(); | 2051 | int nErr = WSAGetLastError(); |