From 5632bc9c8bcfd3492f88d9a14ee4b6a7a7e63116 Mon Sep 17 00:00:00 2001 From: evgeny Date: Tue, 4 Aug 2026 22:30:56 +0300 Subject: [PATCH] invitedialog: fix IPv4 byte order, show v6 prefix, add channel_id to diagnostic --- tools/chatgui/src/invitedialog.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/tools/chatgui/src/invitedialog.cpp b/tools/chatgui/src/invitedialog.cpp index 4d3800fd..86caacb4 100644 --- a/tools/chatgui/src/invitedialog.cpp +++ b/tools/chatgui/src/invitedialog.cpp @@ -146,21 +146,21 @@ void InviteDialog::onInviteLinkTextChanged() { for (int i = 0; i < d.addrs.size() && i < 3; i++) { if (i > 0) addrInfo += ", "; if (d.addrs[i].family == 4 && d.addrs[i].address.size() >= 4) { - uint32_t ip4 = 0; memcpy(&ip4, d.addrs[i].address.constData(), 4); - addrInfo += QString("%1.%2.%3.%4:%5") - .arg((ip4>>24)&0xFF).arg((ip4>>16)&0xFF).arg((ip4>>8)&0xFF).arg(ip4&0xFF) - .arg(d.addrs[i].port); + const uint8_t* ab = (const uint8_t*)d.addrs[i].address.constData(); + addrInfo += QString("%1.%2.%3.%4:%5").arg(ab[0]).arg(ab[1]).arg(ab[2]).arg(ab[3]).arg(d.addrs[i].port); } else { - addrInfo += QString("v%1:%2").arg(d.addrs[i].family).arg(d.addrs[i].port); + addrInfo += QString("v6:[%1..]:%2").arg( + QString::fromLatin1(d.addrs[i].address.left(4).toHex())).arg(d.addrs[i].port); } } if (d.addrs.size() > 3) addrInfo += QString(" +%1 more").arg(d.addrs.size() - 3); - QString diag = QString("Ссылка: узел 0x%1 ключ %2, %3 адр. (%4)") + QString diag = QString("Ссылка: узел 0x%1 ключ %2, %3 адр. (%4)\nПриглашение в канал: %5") .arg(targetNodeId, 16, 16, QChar('0')) .arg(pkShort) .arg(d.addrs.size()) - .arg(addrInfo); + .arg(addrInfo) + .arg(m_channelId); if (myNodeId != 0 && myNodeId == targetNodeId) { m_inviteStatusLabel->setStyleSheet("color: #E67E22; font-size: 11px; padding: 2px 0;"); @@ -211,22 +211,21 @@ void InviteDialog::onSendInvite() { QString addrInfo; for (int i = 0; i < d.addrs.size() && i < 3; i++) { if (i > 0) addrInfo += ", "; - uint32_t ip4 = 0; if (d.addrs[i].family == 4 && d.addrs[i].address.size() >= 4) { - memcpy(&ip4, d.addrs[i].address.constData(), 4); - addrInfo += QString("%1.%2.%3.%4:%5") - .arg((ip4>>24)&0xFF).arg((ip4>>16)&0xFF).arg((ip4>>8)&0xFF).arg(ip4&0xFF) - .arg(d.addrs[i].port); + const uint8_t* ab = (const uint8_t*)d.addrs[i].address.constData(); + addrInfo += QString("%1.%2.%3.%4:%5").arg(ab[0]).arg(ab[1]).arg(ab[2]).arg(ab[3]).arg(d.addrs[i].port); } else { - addrInfo += QString("v%1:%2").arg(d.addrs[i].family).arg(d.addrs[i].port); + addrInfo += QString("v6:[%1..]:%2").arg( + QString::fromLatin1(d.addrs[i].address.left(4).toHex())).arg(d.addrs[i].port); } } if (d.addrs.size() > 3) addrInfo += QString(" +%1 more").arg(d.addrs.size() - 3); - QString diag = QString("Ссылка: узел 0x%1 ключ %2, %3 адр. (%4)") + QString diag = QString("Ссылка: узел 0x%1 ключ %2, %3 адр. (%4)\nПриглашение в канал: %5") .arg(targetNodeId, 16, 16, QChar('0')) .arg(pkShort) .arg(d.addrs.size()) - .arg(addrInfo); + .arg(addrInfo) + .arg(m_channelId); GUI_INFO("invite_by_link: %s", diag.toUtf8().constData()); if (myNodeId != 0 && myNodeId == targetNodeId) { GUI_WARN("invite_by_link: self-invite rejected — link contains own pubkey, node=0x%016llx", (unsigned long long)myNodeId);