Wait for both ETCP streams before starting Merkle tests

This commit is contained in:
evgeny committed 2026-10-22 22:52:14 +02:00
1 parent 6afc57569a
commit e2ee0d81dd
2 files changed
+11 -10

No files matched your search

+2 -2
View File
@@ -78,8 +78,8 @@ Bootstrap-адреса не перекрывают подписанную зап
удерживает один handle на клиента, независимо от количества его адресов.
Включение конфигурационного пира в UTUN-группу выполняет callback NCD UP.
Транспортный UP и наличие callback старого `etcp_connect` больше не включают
соединение в UTUN-группу автоматически. Входящий JOIN остаётся явным запросом
Само событие транспортного UP не включает соединение в UTUN-группу автоматически.
Входящий JOIN остаётся явным запросом
участия. При пересоздании UTUN-группы учитываются её конфигурационные handles.
Удаление клиента отправляет `LEAVE_GROUP` и освобождает удержание UTUN-группы
с обеих сторон. Другие владельцы NCD сохраняют транспорт. Поздние NODEINFO и
+9 -8
View File
@@ -564,15 +564,16 @@ static void _intg_timeout(void* arg) { (void)arg; printf(" GLOBAL TIMEOUT\n");
static int _cond_links_up(void) {
if (!i_a || !i_b) return 0;
int links = 0;
struct ll_entry* e = i_a->connections->head;
while (e) {
struct conn_queue_entry* ce = (struct conn_queue_entry*)e->data;
struct ETCP_LINK* l = ce->conn->links;
while (l) { if (l->initialized) links++; l = l->next; }
e = e->next;
struct UTUN_INSTANCE* peers[] = {i_b, i_c};
for (unsigned i = 0; i < sizeof(peers) / sizeof(peers[0]); i++) {
if (!peers[i]) continue;
struct ETCP_CONN* local = instance_find_conn(i_a, peers[i]->node_id);
struct ETCP_CONN* remote = instance_find_conn(peers[i], i_a->node_id);
if (!local || !remote || !local->initialized || !remote->initialized || !local->links_up || !remote->links_up ||
local->session_required || remote->session_required || local->reinit_pending || remote->reinit_pending ||
local->close_requested || remote->close_requested) return 0;
}
return links >= (i_c ? 2 : 1);
return 1;
}
static int _wait_for(const char* desc, int (*cond)(void), int timeout_tb) {