diff --git a/src/routing_layer/topo_group.c b/src/routing_layer/topo_group.c index 53b9558f..b8080b8d 100644 --- a/src/routing_layer/topo_group.c +++ b/src/routing_layer/topo_group.c @@ -955,8 +955,8 @@ void topo_groups_set_node_updated_cb(struct TOPO_GROUPS* groups, topo_node_updat static int topo_group_begin_conn(struct TOPO_GROUP* group, struct ETCP_CONN* conn, int retain) { if (!group || !conn) { DEBUG_ERROR(DEBUG_CATEGORY_BGP, "invalid args"); return -1; } if (group->stopping) { DEBUG_WARN(DEBUG_CATEGORY_BGP, "join on stopped group"); return -1; } - if (conn->instance != group->instance || !conn->links_up || conn->close_requested) { - DEBUG_WARN(DEBUG_CATEGORY_BGP, "group join needs a live transport of the same instance peer=%016llx group=%016llx", + if (conn->instance != group->instance || conn->close_requested) { + DEBUG_WARN(DEBUG_CATEGORY_BGP, "group join needs an open transport of the same instance peer=%016llx group=%016llx", (unsigned long long)conn->peer_node_id, (unsigned long long)group->group_id); return -1; } if (!conn->instance->rt) { DEBUG_ERROR(DEBUG_CATEGORY_BGP, "conn->instance->rt is NULL"); return -1; } diff --git a/src/routing_layer/topo_group.h b/src/routing_layer/topo_group.h index 49faaa35..47041c49 100644 --- a/src/routing_layer/topo_group.h +++ b/src/routing_layer/topo_group.h @@ -328,7 +328,8 @@ struct TOPO_GROUP* topo_groups_create_group(struct TOPO_GROUPS* g, uint64_t grou void topo_groups_remove_group(struct TOPO_GROUPS* g, uint64_t group_id); /** - * @brief Присоединяет UP-транспорт того же instance к группе и начинает JOIN/ACCEPT. + * @brief Присоединяет открытый транспорт того же instance к группе и начинает JOIN/ACCEPT. + * Допускает постановку обмена до UP; READY требует UP и завершённой синхронизации. * Группа приобретает собственный NCD handle; повтор не сбрасывает сессию. 0/-1. * Для обычного инициатора используйте отменяемый topo_group_peer_open(). */