fix(chatgui): label detected NAT with unknown type as NAT?

This commit is contained in:
evgeny committed 2026-10-17 22:02:36 +02:00
1 parent 2513e9ae81
commit 60104ea093
3 files changed
+15 -5

No files matched your search

+10 -1
View File
@@ -35,7 +35,16 @@ static void memberDetailCb(const uint8_t* data, int len) {
} }
static QString addrRoleStr(int t) { static QString addrRoleStr(int t) {
switch (t) { case 0: return "local"; case 1: return "public"; case 2: return "nat_eim"; case 3: return "nat_dependent"; case 4: return "unknown"; case 5: return "contact_required"; default: return QString("?%1").arg(t); } switch (t) {
case 0: return "local";
case 1: return "public";
case 2: return "nat_eim";
case 3: return "nat_dependent";
case 4: return "NAT?";
case 5: return "contact_required";
case 6: return "EIM?";
default: return QString("?%1").arg(t);
}
} }
QString AccountList::addrStr(const void* addr, int family) { QString AccountList::addrStr(const void* addr, int family) {
+1 -1
View File
@@ -55,7 +55,7 @@ static QString addrTypeStr(int t) {
case ADDR_TYPE_DIRECT: return "DIRECT"; case ADDR_TYPE_DIRECT: return "DIRECT";
case ADDR_TYPE_NAT_EIM: return "NAT type=EIM"; case ADDR_TYPE_NAT_EIM: return "NAT type=EIM";
case ADDR_TYPE_NAT_STRICT: return "NAT type=STRICT"; case ADDR_TYPE_NAT_STRICT: return "NAT type=STRICT";
case ADDR_TYPE_NAT: return "NAT type=UNKNOWN"; case ADDR_TYPE_NAT: return "NAT?";
case ADDR_TYPE_CONTACT: return "CONTACT_REQUIRED"; case ADDR_TYPE_CONTACT: return "CONTACT_REQUIRED";
case ADDR_TYPE_NAT_EIM_UNVERIFIED: return "NAT type=EIM?"; case ADDR_TYPE_NAT_EIM_UNVERIFIED: return "NAT type=EIM?";
default: return QString("?%1").arg(t); default: return QString("?%1").arg(t);
+4 -3
View File
@@ -79,10 +79,11 @@ private slots:
void addressPresentation() { void addressPresentation() {
TOPO_SOCKMETA4 meta4{}; meta4.id = 5; meta4.config_type = CFG_SERVER_TYPE_PUBLIC; TOPO_SOCKMETA4 meta4{}; meta4.id = 5; meta4.config_type = CFG_SERVER_TYPE_PUBLIC;
meta4.address_profile.source = ADDRESS_SOURCE_ETCP;
TOPO_SOCKMETA6 meta6{}; meta6.id = 6; meta6.config_type = CFG_SERVER_TYPE_PUBLIC; TOPO_SOCKMETA6 meta6{}; meta6.id = 6; meta6.config_type = CFG_SERVER_TYPE_PUBLIC;
meta6.address_profile = {ADDRESS_MAP_UNCHANGED, ADDRESS_IN_OPEN, ADDRESS_SOURCE_ETCP}; meta6.address_profile = {ADDRESS_MAP_UNCHANGED, ADDRESS_IN_OPEN, ADDRESS_SOURCE_ETCP};
TOPO_ADDR4 addr4{}; memcpy(addr4.addr, (uint8_t[]){194,63,142,140}, 4); TOPO_ADDR4 addr4{}; memcpy(addr4.addr, (uint8_t[]){194,63,142,140}, 4);
addr4.port = 1333; addr4.socket_id = 5; addr4.protocol = TOPO_PROTO_UDP; addr4.port = 0; addr4.socket_id = 5; addr4.protocol = TOPO_PROTO_TCP; addr4.type = TOPO_ADDR_NAT;
TOPO_ADDR6 addr6{}; addr6.addr[0] = 0x2a; addr6.addr[1] = 0x04; addr6.addr[2] = 0x52; addr6.addr[15] = 0xf; TOPO_ADDR6 addr6{}; addr6.addr[0] = 0x2a; addr6.addr[1] = 0x04; addr6.addr[2] = 0x52; addr6.addr[15] = 0xf;
addr6.port = 443; addr6.socket_id = 6; addr6.protocol = TOPO_PROTO_TCP | TOPO_PROTO_REALITY; addr6.port = 443; addr6.socket_id = 6; addr6.protocol = TOPO_PROTO_TCP | TOPO_PROTO_REALITY;
TOPO_NODE node{}; node.node_id = inst->node_id; TOPO_NODE node{}; node.node_id = inst->node_id;
@@ -91,8 +92,8 @@ private slots:
NodesPage page(&db); page.refreshNodes(); NodesPage page(&db); page.refreshNodes();
const auto* dump = page.findChild<QPlainTextEdit*>(); QVERIFY(dump); const auto* dump = page.findChild<QPlainTextEdit*>(); QVERIFY(dump);
const QString text = dump->toPlainText(); const QString text = dump->toPlainText();
QVERIFY2(text.contains("194.63.142.140:1333 UDP UNKNOWN"), qPrintable(text)); QVERIFY2(text.contains("194.63.142.140:0 TCP NAT?"), qPrintable(text));
QVERIFY2(text.contains("2a04:5200:0:0:0:0:0:f:443 TCP+REALITY DIRECT"), qPrintable(text)); QVERIFY2(text.contains("2a04:5200:0:0:0:0:0:f:443 TCP+REALITY INTERFACE mapping=UNCHANGED inbound=OPEN"), qPrintable(text));
} }
void unavailableAndForeignReferencesFail() { void unavailableAndForeignReferencesFail() {