diff --git a/src/etcp_connections.c b/src/etcp_connections.c index 2019f88..62e976f 100644 --- a/src/etcp_connections.c +++ b/src/etcp_connections.c @@ -803,6 +803,9 @@ static void etcp_connections_read_callback_socket(socket_t sock, void* arg) { memory_pool_free(e_sock->instance->pkt_pool, pkt); link->initialized = 1;// получен init request (server), считаем линк уже готовым к работе + link->link_status = 1; // Link is up after successful initialization + DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "[%s] Link %p (local_id=%d) initialized and marked as UP (server)", + link->etcp->log_name, link, link->local_link_id); // Start keepalive timer if (!link->keepalive_timer && link->keepalive_interval > 0) { @@ -910,6 +913,9 @@ process_decrypted: // Mark link as initialized // DEBUG_DEBUG(DEBUG_CATEGORY_CONNECTION, "Setting link->initialized=1, link=%p, is_server=%d", link, link->is_server); link->initialized = 1;// получен init response (client) + link->link_status = 1; // Link is up after successful initialization + DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "[%s] Link %p (local_id=%d) initialized and marked as UP (client)", + link->etcp->log_name, link, link->local_link_id); // Start keepalive timer if (!link->keepalive_timer && link->keepalive_interval > 0) { diff --git a/src/etcp_loadbalancer.c b/src/etcp_loadbalancer.c index 361415c..2054595 100644 --- a/src/etcp_loadbalancer.c +++ b/src/etcp_loadbalancer.c @@ -44,7 +44,7 @@ struct ETCP_LINK* etcp_loadbalancer_select_link(struct ETCP_CONN* etcp) { // link_index, link, link->initialized, link->shaper_timer==NULL?1:0, // (unsigned long long)link->shaper_load_time_tb, (unsigned long long)link->shaper_sub_nanotime); - if (!link->initialized || link->shaper_timer) {// если установлен таймер - значит надо ждать. не рассматриваем этот линк + if (!link->initialized || link->shaper_timer || link->link_status != 1) {// если установлен таймер - значит надо ждать. не рассматриваем этот линк link = link->next; continue; }