diff --git a/core/src/main/java/com/google/bitcoin/net/ConnectionHandler.java b/core/src/main/java/com/google/bitcoin/net/ConnectionHandler.java index 6e7aae5c..462f4002 100644 --- a/core/src/main/java/com/google/bitcoin/net/ConnectionHandler.java +++ b/core/src/main/java/com/google/bitcoin/net/ConnectionHandler.java @@ -86,7 +86,9 @@ class ConnectionHandler implements MessageWriteTarget { public ConnectionHandler(StreamParser parser, SelectionKey key, Set connectedHandlers) { this(checkNotNull(parser), key); - // closeConnection() may have already happened, in which case we shouldn't add ourselves to the connectedHandlers set + // closeConnection() may have already happened because we invoked the other c'tor above, which called + // parser.setWriteTarget which might have re-entered already. In this case we shouldn't add ourselves + // to the connectedHandlers set. lock.lock(); boolean alreadyClosed = false; try {