From db86850d15ac39b097627292c5c35b0dd90fb18d Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sun, 13 Dec 2015 16:40:42 +0000
Subject: [PATCH] Addresses: Catch a rare (Windows only? IPv6 only?) error when
 enumerating network interfaces

---
 core/java/src/net/i2p/util/Addresses.java             | 10 +++++++++-
 router/java/src/net/i2p/router/transport/udp/MTU.java |  8 ++++++++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/core/java/src/net/i2p/util/Addresses.java b/core/java/src/net/i2p/util/Addresses.java
index 6737a528af..6022bf35b7 100644
--- a/core/java/src/net/i2p/util/Addresses.java
+++ b/core/java/src/net/i2p/util/Addresses.java
@@ -131,7 +131,15 @@ public abstract class Addresses {
                     }
                 }
             }
-        } catch (SocketException e) {}
+        } catch (SocketException e) {
+        } catch (java.lang.Error e) {
+            // Windows, possibly when IPv6 only...
+            // https://bugs.openjdk.java.net/browse/JDK-8046500
+            // java.lang.Error: IP Helper Library GetIfTable function failed
+            //   at java.net.NetworkInterface.getAll(Native Method)
+            //   at java.net.NetworkInterface.getNetworkInterfaces(Unknown Source)
+            //   at net.i2p.util.Addresses.getAddresses ...
+        }
 
         if (includeLoopbackAndWildcard) {
             if (haveIPv4)
diff --git a/router/java/src/net/i2p/router/transport/udp/MTU.java b/router/java/src/net/i2p/router/transport/udp/MTU.java
index c6a2d1a2ea..58d594e0d7 100644
--- a/router/java/src/net/i2p/router/transport/udp/MTU.java
+++ b/router/java/src/net/i2p/router/transport/udp/MTU.java
@@ -40,6 +40,14 @@ abstract class MTU {
             ifcs = NetworkInterface.getNetworkInterfaces();
         } catch (SocketException se) {
             return 0;
+        } catch (java.lang.Error e) {
+            // Windows, possibly when IPv6 only...
+            // https://bugs.openjdk.java.net/browse/JDK-8046500
+            // java.lang.Error: IP Helper Library GetIfTable function failed
+            //   at java.net.NetworkInterface.getAll(Native Method)
+            //   at java.net.NetworkInterface.getNetworkInterfaces(Unknown Source)
+            //   at net.i2p.util.Addresses.getAddresses ...
+            return 0;
         }
         if (ifcs != null) {
             while (ifcs.hasMoreElements()) {
-- 
GitLab