diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java index f64239265..d3f764f37 100644 --- a/router/java/src/net/i2p/router/transport/UPnP.java +++ b/router/java/src/net/i2p/router/transport/UPnP.java @@ -280,10 +280,15 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis if (pkt != null) { String pktIP = pkt.getRemoteAddress(); if (!stringEquals(ip, pktIP)) { - ignore = true; - if (_log.shouldWarn()) - _log.warn("Ignoring UPnP with IP mismatch: " + name + " UDN: " + udn + - " dev IP " + ip + " pkt IP: " + pktIP); + // IPv6 location received over IPv4 is ok, or vice versa + boolean v61 = ip.contains(":"); + boolean v62 = pktIP.contains(":"); + if (v61 == v62) { + ignore = true; + if (_log.shouldWarn()) + _log.warn("Ignoring UPnP with IP mismatch: " + name + " UDN: " + udn + + " dev IP " + ip + " pkt IP: " + pktIP); + } } } } diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java index d9b536aee..bbcc817dc 100644 --- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java +++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java @@ -248,7 +248,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority Status.REJECT_UNSOLICITED, Status.IPV4_FIREWALLED_IPV6_OK, Status.IPV4_SNAT_IPV6_OK, - Status.IPV4_OK_IPV6_FIREWALLED); + Status.IPV4_FIREWALLED_IPV6_UNKNOWN); private static final Set STATUS_IPV6_FW = EnumSet.of(Status.IPV4_OK_IPV6_FIREWALLED, Status.IPV4_UNKNOWN_IPV6_FIREWALLED,