Files
hemna 7f6bcef72b fix: guard daemon threads against unhandled loop() exceptions (#294)
Stability fixes for the critical unhandled-exception findings:

* APRSDThread.run() now catches exceptions raised by loop() and
  keeps the thread alive instead of silently killing it on the
  first transient error (with a 1s backoff to avoid a hot loop).

* Collector.collect() and KeepAliveCollector.check()/log() no
  longer re-raise producer exceptions. A single failing stats or
  keepalive producer previously killed the KeepAliveThread, which
  is the very thread that reports dead threads.

* APRSDProcessPacketThread.process_packet() no longer calls
  .lower() on a None addresse/to_call, which raised AttributeError
  and silently killed the ProcessPKT thread on malformed or
  third-party packets.  The to_call None-guard now matches the
  existing guard in the MessagePacket branch.
2026-09-20 10:07:25 -04:00
..