diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java index fce85e9266d70103a60063c8e87587f029f14bb3..89076f9ce34d48726df5b412e0b1b5b3584a939a 100644 --- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java +++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java @@ -850,11 +850,20 @@ class EstablishmentManager { if (_log.shouldLog(Log.WARN)) _log.warn("Peer " + state + " sent us an invalid DH parameter", ippe); _inboundStates.remove(state.getRemoteHostId()); + state.fail(); return; } - _transport.send(_builder.buildSessionCreatedPacket(state, + UDPPacket pkt = _builder.buildSessionCreatedPacket(state, _transport.getExternalPort(state.getSentIP().length == 16), - _transport.getIntroKey())); + _transport.getIntroKey()); + if (pkt == null) { + if (_log.shouldLog(Log.WARN)) + _log.warn("Peer " + state + " sent us an invalid IP?"); + _inboundStates.remove(state.getRemoteHostId()); + state.fail(); + return; + } + _transport.send(pkt); state.createdPacketSent(); }