chat: запуск BGP-обмена при подключении узла к группе (invite + auto-connect)
This commit is contained in:
1 parent
5b8c725c01
commit
23fbdf4584
2 files changed
+16
No files matched your search
@@ -284,6 +284,8 @@ static void tgc_callback(struct NODE_CONN_DIRECT* h, enum ncd_event event, void*
|
||||
if (ok) {
|
||||
struct TOPO_GROUP_NODE* nq = topo_node_find_by_id(gc->group, node_id);
|
||||
if (nq) nq->handle = h;
|
||||
/* запуск BGP: узел соединён с группой */
|
||||
if (conn) topo_group_new_conn(gc->group, conn);
|
||||
} else if (event == NCD_EVENT_TIMEOUT) {
|
||||
struct TOPO_GROUP_NODE* nq = topo_node_find_by_id(gc->group, node_id);
|
||||
if (nq) nq->handle = NULL;
|
||||
|
||||
@@ -181,6 +181,13 @@ static void tgi_handle_info_req(struct ETCP_CONN* conn, const uint8_t* data, siz
|
||||
/* ── создаём инфраструктуру группы СРАЗУ ── */
|
||||
chat_core_ensure_channel_ready(ch_id);
|
||||
|
||||
/* запуск BGP: узел соединён с группой, членство подтверждено (inviter, INFO_REQ) */
|
||||
{
|
||||
struct TOPO_GROUP* bgp_grp = topo_groups_find(inst->topo_groups, req->group_id);
|
||||
if (bgp_grp && bgp_grp->group_type == TOPO_GROUP_TYPE_CHAT)
|
||||
topo_group_new_conn(bgp_grp, conn);
|
||||
}
|
||||
|
||||
/* ── сериализуем ответ ── */
|
||||
size_t ch_nl = strlen(ch_name); if (ch_nl > 255) ch_nl = 255;
|
||||
uint8_t inv_flags = (my_join_sig[0] || my_join_ts) ? PEERS_FLAG_HAS_JOIN : 0;
|
||||
@@ -324,6 +331,13 @@ static void tgi_handle_info_resp(struct ETCP_CONN* conn, const uint8_t* data, si
|
||||
DEBUG_INFO(DEBUG_CATEGORY_GENERAL, "invite: membership CONFIRMED by 0x%016llx name=\"%.*s\" ch=%s — full channel ready",
|
||||
(unsigned long long)inv->node_id, (int)nnl, nnl ? (const char*)resp->node_name : "?", ch_id);
|
||||
|
||||
/* запуск BGP: узел соединён с группой и членство подтверждено */
|
||||
{
|
||||
struct TOPO_GROUP* bgp_grp = topo_groups_find(inv->inst->topo_groups, inv->group_id);
|
||||
if (bgp_grp && bgp_grp->group_type == TOPO_GROUP_TYPE_CHAT)
|
||||
topo_group_new_conn(bgp_grp, conn);
|
||||
}
|
||||
|
||||
/* ── успех: переводим ncd-handle во владение узла, доставляем JOIN ── */
|
||||
{
|
||||
uint64_t node_id = inv->node_id, group_id = inv->group_id;
|
||||
|
||||
Reference in new issue
Block a user