Reject zero CM request ids before creating peer state
This commit is contained in:
1 parent
8e7fb1f31b
commit
6cfd88afcf
2 files changed
+10
-1
No files matched your search
@@ -129,7 +129,8 @@ BG ping проверяет по одному узлу каждые 100 мс; п
|
||||
первый подходящий UDP endpoint IPv4/IPv6. Candidate ping работает каждые 2 секунды:
|
||||
обновляет до трёх кандидатов, пингует активные UDP/STCP-линки и запускает пробы
|
||||
route_connectivity для неактивных. Без активного линка устаревший замер удаляет
|
||||
кандидата через 30 секунд; проверка свежести RTT для согласования использует 20 секунд.
|
||||
кандидата через 30 секунд. Если у READY-транспорта нет текущего RTT, результат
|
||||
route_connectivity используется только в пределах 20 секунд после пробы.
|
||||
NAT-детектор откладывает эти пробы, standby переносит их в активную фазу.
|
||||
|
||||
Кандидаты упорядочены по RTT, затем node_id. При заполнении кеша кандидат с
|
||||
|
||||
@@ -438,6 +438,14 @@ static void test_local_allocation_failures(struct wire_fixture *f) {
|
||||
assert(!topo_node_find_by_id(created, bootstrap.node_id) && !topo_node_registry_find(&f->groups, bootstrap.node_id));
|
||||
assert(live_allocations() == before);
|
||||
}
|
||||
struct TOPO_NODE* known = topo_node_sqlite_node_load(f->inst.topo_sqlite_db, &f->groups, bootstrap.node_id);
|
||||
assert(known && topo_node_registry_store(&f->groups, known));
|
||||
struct CM_DIRECT_REQ invalid_direct = {ETCP_RT_ID_CONN_MGR, CM_SUBCMD_DIRECT_REQ, 0};
|
||||
cm_handle_direct_req(bootstrap.node_id, created->conn_mgr, (const uint8_t*)&invalid_direct, sizeof(invalid_direct));
|
||||
struct CM_EXCHANGE_REQ invalid_exchange = {.cmd = ETCP_RT_ID_CONN_MGR, .subcmd = CM_SUBCMD_INTERM_EXCHANGE_REQ};
|
||||
cm_handle_interm_exchange_req(bootstrap.node_id, created->conn_mgr, &invalid_exchange);
|
||||
assert(!created->conn_mgr->entries->head);
|
||||
topo_node_registry_unref(&f->groups, bootstrap.node_id);
|
||||
assert(sqlite3_close(f->inst.topo_sqlite_db) == SQLITE_OK); f->inst.topo_sqlite_db = NULL;
|
||||
topo_groups_remove_group(&f->groups, 43); uasync_poll(f->inst.ua, 0);
|
||||
queue_free(f->groups.group_list); f->groups.group_list = NULL;
|
||||
|
||||
Reference in new issue
Block a user