nodeinfo: 2 адреса на сокет (до/после NAT) + типы адресов local/public/nat/nat_eim/nat_strict
- topo_node: сокет рекламирует INTERFACE (до NAT) + NAT (после NAT, EIM); strict/direct отдельным адресом не передаются - topo_node_sqlite: addr_type_classify различает NAT_VERIFIED_*; добавлен ADDR_TYPE_NAT (тип неизвестен), fallback больше не даёт DIRECT по IP - chat_member: бейдж NAT-типа по приоритету (public>nat_eim>nat>nat_strict>local) вместо MIN(addr_type) - GUI (desktop+android): адреса мембера с socket_id и ролью (local/public/nat/nat_eim/nat_strict)
This commit is contained in:
1 parent
a823898379
commit
7bba39ddcb
14 files changed
+82
-39
No files matched your search
+14
-4
@@ -170,8 +170,13 @@ int chat_core_get_member_list(const char* ch_id, uint8_t** out, int* count) {
|
||||
}
|
||||
|
||||
snprintf(sql, sizeof(sql),
|
||||
"SELECT node_id, MIN(rtt), MIN(addr_type) FROM node_addresses"
|
||||
" WHERE node_id IN (%s) AND rtt > 0 GROUP BY node_id", id_list);
|
||||
"SELECT node_id, MIN(rtt),"
|
||||
" CASE WHEN MAX(addr_type=1) THEN 1"
|
||||
" WHEN MAX(addr_type=2) THEN 2"
|
||||
" WHEN MAX(addr_type=4) THEN 4"
|
||||
" WHEN MAX(addr_type=3) THEN 3"
|
||||
" ELSE 0 END"
|
||||
" FROM node_addresses WHERE node_id IN (%s) AND rtt > 0 GROUP BY node_id", id_list);
|
||||
u_free(id_list);
|
||||
|
||||
if (sqlite3_prepare_v2(g_cc.db, sql, -1, &st, NULL) == SQLITE_OK) {
|
||||
@@ -262,8 +267,13 @@ int chat_core_get_single_member(const char* ch_id, uint64_t node_id, uint8_t* ou
|
||||
|
||||
/* RTT / NAT */
|
||||
snprintf(sql, sizeof(sql),
|
||||
"SELECT MIN(rtt), MIN(addr_type) FROM node_addresses"
|
||||
" WHERE node_id=? AND rtt > 0");
|
||||
"SELECT MIN(rtt),"
|
||||
" CASE WHEN MAX(addr_type=1) THEN 1"
|
||||
" WHEN MAX(addr_type=2) THEN 2"
|
||||
" WHEN MAX(addr_type=4) THEN 4"
|
||||
" WHEN MAX(addr_type=3) THEN 3"
|
||||
" ELSE 0 END"
|
||||
" FROM node_addresses WHERE node_id=? AND rtt > 0");
|
||||
if (sqlite3_prepare_v2(g_cc.db, sql, -1, &st, NULL) == SQLITE_OK) {
|
||||
sqlite3_bind_int64(st, 1, (sqlite3_int64)node_id);
|
||||
if (sqlite3_step(st) == SQLITE_ROW) {
|
||||
|
||||
Reference in new issue
Block a user