From 969c085085a491b923e36c568620913a6da29878 Mon Sep 17 00:00:00 2001 From: evgeny Date: Thu, 1 Oct 2026 01:09:15 +0300 Subject: [PATCH] tests: resend withdrawn relay advertisements during recovery --- tests/test_conn_mgr_phases.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tests/test_conn_mgr_phases.c b/tests/test_conn_mgr_phases.c index 933790b3..f03e092f 100644 --- a/tests/test_conn_mgr_phases.c +++ b/tests/test_conn_mgr_phases.c @@ -661,6 +661,12 @@ static int run_relay_recovery(void) { } struct ETCP_CONN* to_a = instance_find_conn(inst_c, nid_a); struct TOPO_GROUP_NODE* b_on_c = topo_node_find_by_id(defgrp(inst_c), nid_b); + // Получатель потерял анонс: очищаем кэш отправителя, чтобы NODEINFO действительно ушёл по сети. + for (struct ll_entry* e = defgrp(inst_c)->senders_list->head; e; e = e->next) { + struct TOPO_GROUP_CONN_ITEM* peer = (struct TOPO_GROUP_CONN_ITEM*)e->data; + struct ll_entry* advert = peer->node_id == nid_a && peer->advertised ? queue_find_data_by_index(peer->advertised, &nid_b) : NULL; + if (advert) { queue_remove_data(peer->advertised, advert); queue_entry_free(advert); } + } if (!to_a || !b_on_c || topo_group_send_nodeinfo(defgrp(inst_c), b_on_c, to_a) < 0) return -1; ev_a = -1; if (!poll_until(ev_a_up, 3000) || up_count != 2 || down_count != 1 || timeout_count || @@ -696,6 +702,11 @@ static int run_initial_timeout(void) { } struct ETCP_CONN* to_a = instance_find_conn(inst_c, nid_a); struct TOPO_GROUP_NODE* b_on_c = topo_node_find_by_id(defgrp(inst_c), nid_b); + for (struct ll_entry* e = defgrp(inst_c)->senders_list->head; e; e = e->next) { + struct TOPO_GROUP_CONN_ITEM* peer = (struct TOPO_GROUP_CONN_ITEM*)e->data; + struct ll_entry* advert = peer->node_id == nid_a && peer->advertised ? queue_find_data_by_index(peer->advertised, &nid_b) : NULL; + if (advert) { queue_remove_data(peer->advertised, advert); queue_entry_free(advert); } + } if (!to_a || !b_on_c || topo_group_send_nodeinfo(defgrp(inst_c), b_on_c, to_a) < 0) return -1; ev_a = -1; if (!poll_until(ev_a_up, 3000) || up_count != 1 || timeout_count != 1 || down_count) {