diff --git a/router/java/src/net/i2p/router/transport/TransportUtil.java b/router/java/src/net/i2p/router/transport/TransportUtil.java
index 61df53e9473fab894f1e8d832b91836e592b98a2..0332a9105b4d112d1b4a039e3d7570c5335a34c2 100644
--- a/router/java/src/net/i2p/router/transport/TransportUtil.java
+++ b/router/java/src/net/i2p/router/transport/TransportUtil.java
@@ -131,25 +131,29 @@ public abstract class TransportUtil {
                 // IPv4 compat ::xxxx:xxxx
                 if (addr[0] == 0)
                     return false;
-                // disallow 2002::/16 (6to4 RFC 3056)
-                if (addr[0] == 0x20 && addr[1] == 0x02)
-                    return false;
+                if (addr[0] == 0x20) {
+                    // disallow 2002::/16 (6to4 RFC 3056)
+                    if (addr[1] == 0x02)
+                        return false;
+                    if (addr[1] == 0x01) {
+                        // disallow 2001:0::/32 (Teredo RFC 4380)
+                        if (addr[2] == 0x00 && addr[3] == 0x00)
+                            return false;
+                        // Documenation (example) RFC 3849
+                        if (addr[2] == 0x0d && (addr[3] & 0xff) == 0xb8)
+                            return false;
+                    }
+                }
                 // disallow fc00::/8 and fd00::/8 (Unique local addresses RFC 4193)
                 // not recognized as local by InetAddress
                 if ((addr[0] & 0xfe) == 0xfc)
                     return false;
-                // disallow 2001:0::/32 (Teredo RFC 4380)
-                if (addr[0] == 0x20 && addr[1] == 0x01 && addr[2] == 0x00 && addr[3] == 0x00)
-                    return false;
                 // Hamachi IPv6
                 if (addr[0] == 0x26 && addr[1] == 0x20 && addr[2] == 0x00 && (addr[3] & 0xff) == 0x9b)
                     return false;
                 // 6bone RFC 2471
                 if (addr[0] == 0x3f && (addr[1] & 0xff) == 0xfe)
                     return false;
-                // Documenation (example) RFC 3849
-                if (addr[0] == 0x20 && addr[1] == 0x01 && addr[2] == 0x0d && (addr[3] & 0xff) == 0xb8)
-                    return false;
                 try {
                     InetAddress ia = InetAddress.getByAddress(addr);
                     return