Wait for both ETCP streams before starting Merkle tests
This commit is contained in:
1 parent
6afc57569a
commit
e2ee0d81dd
2 files changed
+11
-10
No files matched your search
@@ -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 и
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in new issue
Block a user