@ -10,6 +10,7 @@
# include "../utun_instance.h"
# include "../utun_instance.h"
# include "../routing_layer/topo_node_sqlite.h"
# include "../routing_layer/topo_node_sqlite.h"
# include "../routing_layer/topo_group.h"
# include "../routing_layer/etcp_router.h"
# include "../routing_layer/etcp_router.h"
# include "../routing_layer/route_crypto.h"
# include "../routing_layer/route_crypto.h"
# include "../transport_layer/etcp_api.h"
# include "../transport_layer/etcp_api.h"
@ -184,8 +185,20 @@ void chat_join_process_request(struct UTUN_INSTANCE* inst, uint64_t group_id,
CJ_ID , ch_id , ( unsigned long long ) m . node_id , rc ) ;
CJ_ID , ch_id , ( unsigned long long ) m . node_id , rc ) ;
return ;
return ;
}
}
if ( rc & MS_APPLY_CHANGED )
if ( rc & MS_APPLY_CHANGED ) {
member_sync_broadcast_one ( inst , ch_id , m . node_id ) ;
member_sync_broadcast_one ( inst , ch_id , m . node_id ) ;
/* джойнер авторизован — добавляем в CHAT-группу сразу, чтобы BGP подключился */
uint64_t gid = strtoull ( ch_id , NULL , 10 ) ;
struct TOPO_GROUP * g = topo_groups_find ( inst - > topo_groups , gid ) ;
if ( g & & g - > group_type = = TOPO_GROUP_TYPE_CHAT ) {
struct ETCP_CONN * jc = instance_find_conn ( inst , m . node_id ) ;
if ( jc ) {
topo_group_new_conn ( g , jc ) ;
DEBUG_INFO ( DEBUG_CATEGORY_CHAT_SYNC , " %s: joiner 0x%016llx added to group ch=%s for BGP " ,
CJ_ID , ( unsigned long long ) m . node_id , ch_id ) ;
}
}
}
DEBUG_INFO ( DEBUG_CATEGORY_CHAT_SYNC , " %s: process_request accepted joiner=0x%016llx ch=%s via=0x%016llx key=%016llx — signed by me " ,
DEBUG_INFO ( DEBUG_CATEGORY_CHAT_SYNC , " %s: process_request accepted joiner=0x%016llx ch=%s via=0x%016llx key=%016llx — signed by me " ,
CJ_ID , ( unsigned long long ) m . node_id , ch_id , ( unsigned long long ) from_node , ( unsigned long long ) join_key ) ;
CJ_ID , ( unsigned long long ) m . node_id , ch_id , ( unsigned long long ) from_node , ( unsigned long long ) join_key ) ;