diff --git a/src/main/java/net/frozenorb/apiv3/model/IpIntel.java b/src/main/java/net/frozenorb/apiv3/model/IpIntel.java index 2476c3a..6072495 100644 --- a/src/main/java/net/frozenorb/apiv3/model/IpIntel.java +++ b/src/main/java/net/frozenorb/apiv3/model/IpIntel.java @@ -45,7 +45,7 @@ public final class IpIntel { MaxMindUtils.getInsights(id, (maxMindResult, error2) -> { if (error2 != null) { callback.onResult(null, error2); - } else { + } else if (maxMindResult != null) { IpIntel newIpIntel = new IpIntel(id, maxMindResult); ipIntelCollection.insertOne(newIpIntel, (ignored, error3) -> { @@ -55,6 +55,9 @@ public final class IpIntel { callback.onResult(newIpIntel, null); } }); + } else { + // MaxMind failed to return result + callback.onResult(null, null); } }); } @@ -90,6 +93,12 @@ public final class IpIntel { return; } + // MaxMind failed to return result + if (maxMindResult == null) { + createNewIntelFuture.complete(); + return; + } + IpIntel newIpIntel = new IpIntel(ip, maxMindResult); ipIntelCollection.insertOne(newIpIntel, (ignored, error3) -> { diff --git a/src/main/java/net/frozenorb/apiv3/util/MaxMindUtils.java b/src/main/java/net/frozenorb/apiv3/util/MaxMindUtils.java index 2b6fe33..66091e5 100644 --- a/src/main/java/net/frozenorb/apiv3/util/MaxMindUtils.java +++ b/src/main/java/net/frozenorb/apiv3/util/MaxMindUtils.java @@ -26,7 +26,13 @@ public class MaxMindUtils { httpsClient.get(443, "geoip.maxmind.com", "/geoip/v2.1/insights/" + ip, (response) -> { response.bodyHandler((body) -> { JsonObject bodyJson = new JsonObject(body.toString()); - callback.onResult(new MaxMindResult(bodyJson), null); + + try { + MaxMindResult maxMindResult = new MaxMindResult(bodyJson); + callback.onResult(maxMindResult, null); + } catch (Exception ignored) { + callback.onResult(null, null); + } }); response.exceptionHandler((error) -> callback.onResult(null, error));