From c46b23e8601eeebefd2d5154e42b16f834e37b22 Mon Sep 17 00:00:00 2001 From: "torlando-agent[bot]" <281092095+torlando-agent[bot]@users.noreply.github.com> Date: Wed, 29 Jul 2026 14:59:17 +0000 Subject: [PATCH] fix: bound map TLS handshake latency --- lib/tdeck_ui/Hardware/TDeck/MapTileHttpArduino.cpp | 4 ++++ tests/build_scripts/test_map_tile_downloader_contract.py | 1 + 2 files changed, 5 insertions(+) diff --git a/lib/tdeck_ui/Hardware/TDeck/MapTileHttpArduino.cpp b/lib/tdeck_ui/Hardware/TDeck/MapTileHttpArduino.cpp index dda59946..9cfa325d 100644 --- a/lib/tdeck_ui/Hardware/TDeck/MapTileHttpArduino.cpp +++ b/lib/tdeck_ui/Hardware/TDeck/MapTileHttpArduino.cpp @@ -32,6 +32,10 @@ TileTransportResult MapTileHttpArduino::start(const char* url, const char* user_ client_.setCACert(ca_certificate); client_.setTimeout(read_timeout_ms); + unsigned long handshake_seconds = static_cast(connect_timeout_ms / 1000U); + if ((connect_timeout_ms % 1000U) != 0U) ++handshake_seconds; + if (handshake_seconds == 0UL) handshake_seconds = 1UL; + client_.setHandshakeTimeout(handshake_seconds); http_.setConnectTimeout(boundedConnectTimeout(connect_timeout_ms)); http_.setTimeout(boundedReadTimeout(read_timeout_ms)); // Keep the single visible-tile TLS session alive across sequential requests. diff --git a/tests/build_scripts/test_map_tile_downloader_contract.py b/tests/build_scripts/test_map_tile_downloader_contract.py index 3cc2985c..71435d37 100644 --- a/tests/build_scripts/test_map_tile_downloader_contract.py +++ b/tests/build_scripts/test_map_tile_downloader_contract.py @@ -35,6 +35,7 @@ def test_https_adapter_verifies_peer_with_explicit_ca_and_has_no_credentials(): assert "setInsecure" not in source assert "setConnectTimeout" in source assert "setTimeout" in source + assert "setHandshakeTimeout" in source assert "setReuse(true)" in source assert "useHTTP10(true)" not in source assert "disconnectIdle" in source