Currently when either a publisher or consumer is receiving an EndStream, there exists the chance that the message is not received and either side closes the connection immediately after sending the message. This has been observed in previewnet ({"from":"2026-05-13T19:19:06.933Z","to":"2026-05-13T19:24:46.783Z"}) where the BN tries to send a DUPLICATE_BLOCK message, immediately ends the stream, the CN side never receives the message but gets a socket closed exception and switches to another BN.
We may want to explore changing the protocol to have acknowledgments for these or on either side when sending an EndStream, expect the other side to close the connection, and if it's not closed within a timeout then close the connection.
Currently when either a publisher or consumer is receiving an EndStream, there exists the chance that the message is not received and either side closes the connection immediately after sending the message. This has been observed in previewnet ({"from":"2026-05-13T19:19:06.933Z","to":"2026-05-13T19:24:46.783Z"}) where the BN tries to send a DUPLICATE_BLOCK message, immediately ends the stream, the CN side never receives the message but gets a socket closed exception and switches to another BN.
We may want to explore changing the protocol to have acknowledgments for these or on either side when sending an EndStream, expect the other side to close the connection, and if it's not closed within a timeout then close the connection.