diff --git a/src/etcp_connections.c b/src/etcp_connections.c index 3f88fe5b..aa05de04 100644 --- a/src/etcp_connections.c +++ b/src/etcp_connections.c @@ -1695,6 +1695,15 @@ void etcp_connections_read_callback_socket(socket_t sock, void* arg) { // Check if link already exists (for CHANNEL_INIT recovery) struct ETCP_LINK* existing_link = etcp_link_find_by_remote_id(conn, req->link_id); + if (!existing_link) { + existing_link = etcp_link_find_by_addr(e_sock, &addr); + if (existing_link && existing_link->etcp == conn) { + DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "[%s] found existing outbound link by addr for incoming INIT, reusing link=%p", + conn->log_name, existing_link); + } else { + existing_link = NULL; + } + } uint8_t send_reset = 0;