diff --git a/history.txt b/history.txt index fc9f5af3e..bae0c0283 100644 --- a/history.txt +++ b/history.txt @@ -1,7 +1,18 @@ -2021-06-07 zzz - Tunnels: - - More work on short tunnel build messages (proposal 157) - - Fix compare logic in ITBM parser (ticket #2814) +2021-06-11 zzz + * UPnP: Bind to IPv6 addresses for search responses + +2021-06-10 zzz + * Updates: + - Add preliminary support for dmg/exe updates + - Make backup news URL configurable (see gitlab MR !33) + +2021-06-08 zzz + * NetDB: Prevent rare deadlock in rebuildRouterInfo() + * Tunnels: + - More work on short tunnel build messages (proposal 157) + - Fix compare logic in ITBM parser (ticket #2814) + - Extend use of high cap peers in expl. tunnels at startup, after extended downtime + - Switch from SHA256 to SipHash for peer ordering 2021-06-01 zzz * i2psnark: Fix autostart for magnets diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index aee15848b..2d30a2c12 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Git"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 2; + public final static long BUILD = 3; /** for example "-test" */ public final static String EXTRA = ""; diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java index 78012214f..aa75fddfc 100644 --- a/router/java/src/net/i2p/router/transport/UPnP.java +++ b/router/java/src/net/i2p/router/transport/UPnP.java @@ -681,13 +681,18 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis * @since 0.9.46 */ static Set getLocalAddresses() { - Set addrs = Addresses.getAddresses(true, false, false); + // older miniupnpd will send ipv6 ssdp search response to ipv4 address, + // but newer ones won't. So we need to bind to an ipv6 address + // to get his ipv6 address so we can bind to OUR ipv6 address + // for a port forward when miniupnpd is configured for "secure". + // local, no loopback, ipv6, no temp. ipv6 + Set addrs = Addresses.getAddresses(true, false, true, false); // remove public addresses // see TransportManager.startListening() for (Iterator iter = addrs.iterator(); iter.hasNext(); ) { String addr = iter.next(); byte[] ip = Addresses.getIP(addr); - if (ip == null || TransportUtil.isPubliclyRoutable(ip, false)) + if (ip == null || TransportUtil.isPubliclyRoutable(ip, true)) iter.remove(); } return addrs; diff --git a/router/java/src/org/cybergarage/http/HTTPRequest.java b/router/java/src/org/cybergarage/http/HTTPRequest.java index 4e35837be..6b9c850b2 100644 --- a/router/java/src/org/cybergarage/http/HTTPRequest.java +++ b/router/java/src/org/cybergarage/http/HTTPRequest.java @@ -423,8 +423,16 @@ public class HTTPRequest extends HTTPPacket // And set the soTimeout to 2 second (for reads). //postSocket = new Socket(host, port); postSocket = new Socket(); - if (bindTo != null) - postSocket.bind(new InetSocketAddress(bindTo, 0)); + if (bindTo != null) { + boolean fromv6 = bindTo.contains(":"); + boolean tov6 = host.contains(":"); + if (fromv6 == tov6) { + //Debug.warning("POST bindTo " + bindTo + " connect to " + host); + postSocket.bind(new InetSocketAddress(bindTo, 0)); + } else { + Debug.warning("POST mismatch, NOT binding to " + bindTo + " connect to " + host); + } + } postSocket.setSoTimeout(2000); SocketAddress sa = new InetSocketAddress(host, port); postSocket.connect(sa, 3000);