|
|
|
|
@ -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; |
|
|
|
|
|