diff --git a/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java b/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java index cec614f86..11b39c59e 100644 --- a/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java +++ b/core/java/src/net/i2p/client/impl/I2CPMessageProducer.java @@ -175,7 +175,10 @@ class I2CPMessageProducer { public void disconnect(I2PSessionImpl session) throws I2PSessionException { if (session.isClosed()) return; DestroySessionMessage dmsg = new DestroySessionMessage(); - dmsg.setSessionId(session.getSessionId()); + SessionId id = session.getSessionId(); + if (id == null) + id = I2PSessionImpl.DUMMY_SESSION; + dmsg.setSessionId(id); session.sendMessage_unchecked(dmsg); // use DisconnectMessage only if we fail and drop connection... // todo: update the code to fire off DisconnectMessage on socket error diff --git a/core/java/src/net/i2p/client/impl/I2PSessionImpl.java b/core/java/src/net/i2p/client/impl/I2PSessionImpl.java index ccadba047..eca710227 100644 --- a/core/java/src/net/i2p/client/impl/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/impl/I2PSessionImpl.java @@ -256,7 +256,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2 public static final int LISTEN_PORT = I2PClient.DEFAULT_LISTEN_PORT; private static final int BUF_SIZE = 32*1024; - private static final SessionId DUMMY_SESSION = new SessionId(65535); + static final SessionId DUMMY_SESSION = new SessionId(65535); /** * for extension by SimpleSession (no dest) @@ -1180,6 +1180,7 @@ public abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2 /** * Retrieve the session's ID + * @return null if unset */ SessionId getSessionId() { return _sessionId; } void setSessionId(SessionId id) { _sessionId = id; }