Skip to content

v0.1.2

Latest

Choose a tag to compare

@0x00001312 0x00001312 released this 01 Jul 17:39

Fixed

  • TCP: toggling TCP connections in Settings crashed the device with a double-free/use-after-free. retireTCPClient() called delete on a raw pointer already owned by RNS::Interface's shared_ptr; teardown then freed it a second time. Fixed by letting tcpIfaces.clear() be the sole destructor.
  • TCP: TCPClientInterface::stop() returned early when WiFi dropped while a connect task was still in flight, leaving the task alive with a dangling self pointer. If the destructor ran first, the task's subsequent _connectState write hit freed memory. Fixed by always waiting for the connect task; ESP32 lwIP aborts pending sockets within milliseconds of network loss.
  • TCP: a reloaded TCPClientInterface inherited stale HDLC frame state, hub transport ID, and reconnect backoff from its previous run. start() now resets all per-connection state. A re-announce fires 4 s after new clients are created so the hub learns our address on the fresh connection.
  • Names: non-contact peer names disappeared after every reboot. Three interlocking bugs: (1) no priority tracking — TCP hub announces could fill the 60-entry on-disk cap, displacing peers we'd actually messaged; (2) eviction race — the RAM guard could evict a name before the first message exchange marked it persistent, with no recovery path; (3) missing dirty flag — if the 5 s save timer fired before a message exchange, markNamePersistent returned early without scheduling a re-save, so the entry was never promoted to a guaranteed slot. All three fixed.
  • Names: lookupName() short-circuited on the 12-char placeholder assigned by notePeerInterface() when a peer messages us before ever announcing, blocking recall_app_data() from returning their real display name.
  • Stamps: stamp computation could grind forever or crash on high proof-of-work costs. Added STAMP_HARD_MAX=16 (hard reject above ESP32-S3 feasibility ceiling), a 30 s abort timeout, and try/catch OOM protection in the stamp task. Stack doubled to 8 KB. UserConfig ceiling clamped to 1–16.

Added

  • UI: "Show Address" in the Peers tab action menu and Messages tab context menu — displays the peer's full 32-char LXMF destination hash as two formatted lines for identity verification against spoofing.

Changed

  • Settings: WiFi mode and Auto LAN changes now chain a "Reboot now / Later" popup immediately after saving instead of showing an easily-missed toast.
  • Peers: non-contact peers sorted by most-recently-heard time (active nodes float to the top); saved contacts keep alphabetical order.