mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-06-06 05:59:33 +00:00
Root cause (post libp2p f54c715 update + rv/kad/service-disco changes): - chat2disco (and waku factory for circuitRelayClient) do direct `node.switch.services = @[Service(hp/autonat)]` (bypassing the deprecated switch.add that called .setup). - AutonatService (enableAddressMapper=true by default) + HP require their .setup(switch) to populate .addressMapper (and handlers) before start(). - In switch.start: services.start → autonat.start does addressMappers.add(nil); await peerInfo.update() → for m in ...: await m(...) → nil proc deref (Defect/SEGV in release). - Surfaces at the `await node.switch.start()` (waku_node:589). - Secondary: wakuKademlia.start() + waku mapper (capturing node, returning announced which hp mutates) scheduled before switch.start (which activates the mounted kad via ms + runs the hp mappers/updates). Fix: - After services= in apps/chat2disco/chat2disco.nim and in waku/factory/waku.nim (both hp and bare autonat branches), explicitly call the .setup(node.switch) (or hp.setup) and handle error. - Move `if not node.wakuKademlia.isNil(): ...start()` to after switch.start() + reconnectRelayPeers (correct ordering for mounted protocol user loops). - Harden waku addressMapper (nil/empty guard, return listenAddrs) and set peerInfo.announcedAddrs (short-circuit) at the add site, in updateAnnounced..., and in the onReservation callbacks (chat2disco + factory) so expandAddrs prefers it. - Minor: lookup/periodic guards in waku_kademlia; doc in autonat_service. Also nph reformats on touched files. Reuses: the .setup methods, existing post-switch init patterns, isNil guards, CatchableError handling, make chat2disco + nph. Verified: make chat2disco (twice, pre/post nph) SuccessX; no SEGV in multiple start-path runs (only expected thread EOF on pipe close); diff only our 5 files. Builds on 82d87cfa (libp2p update) without touching pins or vendored. Caveat: clean `make update` still requires the mix temp patches in pkgs2 (as documented in the update). Fixes the reported chat2disco startup segfault.