@@ -174,10 +174,11 @@ public NioPeerHandler(PeerManager manager) throws IOException {
174174 if (chan == null ) continue ;
175175 try {
176176 Peer peer = setup_socket (chan );
177+ peer .key = chan .register (this .selector , SelectionKey .OP_READ , peer );
177178 Result_NonePeerHandleErrorZ res = this .peer_manager .new_inbound_connection (peer .descriptor );
178- if (res instanceof Result_NonePeerHandleErrorZ .Result_NonePeerHandleErrorZ_OK ) {
179- peer .key = chan . register ( this . selector , SelectionKey . OP_READ , peer );
180- }
179+ if (res instanceof Result_NonePeerHandleErrorZ .Result_NonePeerHandleErrorZ_Err ) {
180+ peer .descriptor . disconnect_socket ( );
181+ }
181182 } catch (IOException ignored ) { }
182183 }
183184 continue ; // There is no attachment so the rest of the loop is useless
@@ -273,14 +274,17 @@ public void connect(byte[] their_node_id, SocketAddress remote, int timeout_ms)
273274 throw new IOException ("Timed out" );
274275 }
275276 Peer peer = setup_socket (chan );
277+ do_selector_action (() -> peer .key = chan .register (this .selector , SelectionKey .OP_READ , peer ));
276278 Result_CVec_u8ZPeerHandleErrorZ res = this .peer_manager .new_outbound_connection (their_node_id , peer .descriptor );
277279 if (res instanceof Result_CVec_u8ZPeerHandleErrorZ .Result_CVec_u8ZPeerHandleErrorZ_OK ) {
278280 byte [] initial_bytes = ((Result_CVec_u8ZPeerHandleErrorZ .Result_CVec_u8ZPeerHandleErrorZ_OK ) res ).res ;
279281 if (chan .write (ByteBuffer .wrap (initial_bytes )) != initial_bytes .length ) {
282+ peer .descriptor .disconnect_socket ();
283+ this .peer_manager .socket_disconnected (peer .descriptor );
280284 throw new IOException ("We assume TCP socket buffer is at least a single packet in length" );
281285 }
282- do_selector_action (() -> peer .key = chan .register (this .selector , SelectionKey .OP_READ , peer ));
283286 } else {
287+ peer .descriptor .disconnect_socket ();
284288 throw new IOException ("LDK rejected outbound connection. This likely shouldn't ever happen." );
285289 }
286290 }
0 commit comments