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 fce85e926..89076f9ce 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(); }