From 28a79def5a11c25806eea5c7d17eb96dc94e52e6 Mon Sep 17 00:00:00 2001 From: zzz Date: Wed, 14 Dec 2022 10:51:34 -0500 Subject: [PATCH] NTCP: Fix rare NPE sending termination reported by drzed --- .../i2p/router/transport/ntcp/NTCPConnection.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java index 50cd07705..785cec6fc 100644 --- a/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java +++ b/router/java/src/net/i2p/router/transport/ntcp/NTCPConnection.java @@ -904,11 +904,14 @@ public class NTCPConnection implements Closeable { synchronized(_writeLock) { if (_sender != null) { sendNTCP2(dataBuf.getData(), blocks); - _sender.destroy(); - // this "plugs" the NTCP2 sender, so sendNTCP2() - // won't send any more after the termination. - _sender = null; - new DelayedCloser(); + // sendNTCP2() -> wantsWrite() -> pumper.processWrite() -> fail -> close() -> NPE + if (_sender != null) { + _sender.destroy(); + // this "plugs" the NTCP2 sender, so sendNTCP2() + // won't send any more after the termination. + _sender = null; + new DelayedCloser(); + } } } releaseReadBuf(dataBuf);