From ed98ce169ed8cb9c0d9ffae05212bb85e747fc69 Mon Sep 17 00:00:00 2001 From: evgeny Date: Fri, 30 Oct 2026 22:40:16 +0100 Subject: [PATCH] Apply known-peer policy to desktop BLE while keeping explicit hardware probes --- tools/cgathui_common/ble_etcp.c | 2 +- tools/cgathui_common/tests/ble_etcp_probe.c | 2 +- tools/chatgui/transport/desktop_ble.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/cgathui_common/ble_etcp.c b/tools/cgathui_common/ble_etcp.c index bc20bec57..865f9665f 100644 --- a/tools/cgathui_common/ble_etcp.c +++ b/tools/cgathui_common/ble_etcp.c @@ -175,7 +175,7 @@ static void service_link(struct ble_etcp_link* c) { fail(c, "invitation-only connection expired"); } } - if (!c->closed && !c->key_received && get_time_us() >= c->deadline) fail(c, "key exchange timeout"); + if (!c->closed && !c->key_received && !c->invitation_only && get_time_us() >= c->deadline) fail(c, "key exchange timeout"); if (c->closed) { changed(c); if (!c->bound) destroy_link(c); diff --git a/tools/cgathui_common/tests/ble_etcp_probe.c b/tools/cgathui_common/tests/ble_etcp_probe.c index 077f833d2..45cd7acf1 100644 --- a/tools/cgathui_common/tests/ble_etcp_probe.c +++ b/tools/cgathui_common/tests/ble_etcp_probe.c @@ -105,7 +105,7 @@ int main(int argc, char** argv) { } struct ble_config c = {.node_id = instance->node_id, .company_id = 0xffff}; c.callbacks.status = status; c.callbacks.connection = connection; - driver = ble_etcp_create(ua, instance, &c); + driver = ble_etcp_create(ua, instance, &c, 0); /* Изолированная аппаратная проба без таблицы участников. */ if (!driver || etcp_bind(instance, ETCP_ID_BLE_PROBE, receive) || ble_start(ble_etcp_radio(driver))) failed = 1; uint64_t end = get_time_us() + (uint64_t)seconds * 1000000, peer = 0, retry = 0, next_send = 0; unsigned sent = 0; diff --git a/tools/chatgui/transport/desktop_ble.cpp b/tools/chatgui/transport/desktop_ble.cpp index 80eaa96c8..86f6604c2 100644 --- a/tools/chatgui/transport/desktop_ble.cpp +++ b/tools/chatgui/transport/desktop_ble.cpp @@ -65,7 +65,7 @@ void DesktopBle::apply(int flags, const char* name) { DEBUG_INFO(DEBUG_CATEGORY_DISCOVERY, "BLE desktop advertising=%d reason=%s", state, reason); }; config.callbacks.validate = [](void*, ble_link_id link, uint64_t node) { - DEBUG_INFO(DEBUG_CATEGORY_DISCOVERY, "BLE desktop validation allow link=%llu node=%016llx", + DEBUG_INFO(DEBUG_CATEGORY_DISCOVERY, "BLE desktop GATT identity received link=%llu node=%016llx; ETCP admission pending", (unsigned long long)link, (unsigned long long)node); return 1; }; @@ -77,7 +77,7 @@ void DesktopBle::apply(int flags, const char* name) { (unsigned long long)link, (unsigned long long)node, state, reason); }; m_snapshot.state = BLE_STARTING; m_snapshot.reason.clear(); - m_driver = ble_etcp_create(m_ua, m_instance, &config); + m_driver = ble_etcp_create(m_ua, m_instance, &config, 1); m_transport = ble_etcp_radio(m_driver); if (!m_transport) { m_snapshot.state = BLE_CLOSED; m_snapshot.reason = QStringLiteral("Could not create Bluetooth transport");