fix(takserver): emit *:-1:stcp contact endpoint so directed TAK-Talk/GeoChat routes over the mesh; SDK v0.5.1

The reconstructed contact endpoint (0.0.0.0:4242:tcp) made ATAK treat mesh peers as directly reachable, so directed messages (TAK-Talk <marti>, GeoChat to a callsign) were delivered to a dead address instead of the Meshtastic server stream and never hit the mesh — broadcast PLI was unaffected. Use the TAK 'reply via this server' endpoint *:-1:stcp (DEFAULT_TAK_ENDPOINT) and bump TAKPacket-SDK to 0.5.1, which fixes the same default in the SDK's CotXmlBuilder.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Ben Meadors
2026-05-29 12:44:16 -05:00
parent 8bdb0916b4
commit 0047e4d152
2 changed files with 8 additions and 2 deletions
@@ -24,7 +24,13 @@ import org.meshtastic.proto.User
// a single exported data package (containing truststore.p12 + client.p12) works for
// both Meshtastic-iOS and Meshtastic-Android without reconfiguration in ATAK/iTAK.
internal const val DEFAULT_TAK_PORT = 8089
internal const val DEFAULT_TAK_ENDPOINT = "0.0.0.0:4242:tcp"
// Default contact endpoint for mesh peers (the real endpoint is never carried over
// LoRa). MUST be the TAK "reply via this server" form `*:-1:stcp`: it makes ATAK route
// directed GeoChat / TAK-Talk (`<marti>`) back down the Meshtastic server stream. A
// concrete host (e.g. `0.0.0.0:4242:tcp`) makes ATAK attempt a dead direct connection,
// so directed messages never reach the mesh while broadcast PLI still works.
internal const val DEFAULT_TAK_ENDPOINT = "*:-1:stcp"
// Bundled certificate password — matches iOS (`"meshtastic"`). Used for the
// server.p12 / client.p12 PKCS#12 files shipped under `tak_certs/` on the classpath.
+1 -1
View File
@@ -88,7 +88,7 @@ kable = "0.43.0"
mqttastic = "0.3.6"
jmdns = "3.6.3"
qrcode-kotlin = "4.5.0"
takpacket-sdk = "0.5.0"
takpacket-sdk = "0.5.1"
# Gradle Plugins
develocity = "4.4.2"