• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

dangernoodle-io / TaipanMiner / 28101823231 / 1
90%
main: 90%

Build:
DEFAULT BRANCH: main
Ran 24 Jun 2026 01:30PM UTC
Files 80
Run time 4s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

24 Jun 2026 01:25PM UTC coverage: 91.311% (+0.02%) from 91.292%
28101823231.1

push

github

web-flow
feat(stratum): force WiFi reassociation after repeated connect failures (TA-440) (#564)

The '3am idle disconnect' zombie scenario: WiFi stays associated and
bb_wifi_has_ip() returns true, but the network path is silently dead (the
router dropped the NAT/association without sending a deauth). The
wifi_reconn FSM never fires because no WIFI_EVENT_STA_DISCONNECTED event
arrives, so getaddrinfo()/connect to the pool fails forever.

Fix: add a connect-establishment failure counter (s_wifi_kick_fail_count)
in stratum_task(), separate from s_consecutive_fail_count (which is the
mid-session read-error counter for pool failover — left untouched). When
the counter reaches STRATUM_WIFI_KICK_THRESHOLD (5) and bb_wifi_has_ip()
is still true, call bb_wifi_force_reassociate() to break the stale WiFi
association and let the FSM rebuild a live path, then reset the counter.

Gating signal: all connect-establishment failures are counted (not just
DNS failures). This is correct because stratum_connect() already gates on
bb_wifi_has_ip() internally — if WiFi is legitimately down, it returns
early before DNS and the outer bb_wifi_has_ip() check at the kick site
suppresses the kick. Any -1 from stratum_connect() when has_ip is true
is therefore a path-dead condition (DNS resolves but NAT is dead, or
TCP connect hangs). The rare false-positive (pool down but reachable)
causes at most one ~5s reassociation, which is acceptable.

The callback approach recorded in the KB ("WiFi zombie state recovery via
callback kick") was chosen to avoid a circular CMake dep. That dep is
gone: components/stratum/CMakeLists.txt already REQUIRES bb_wifi and
stratum_io.c already calls bb_wifi_has_ip() at line 307. Direct call.

The threshold decision is extracted into stratum_should_kick_wifi() in
stratum_machine.c (already in build_src_filter for native envs) and
unit-tested across all branches: below threshold, at threshold with/without
IP, above threshold with/without IP. 501/501 host tests p... (continued)

1777 of 2135 branches covered (83.23%)

Branch coverage included in aggregate %.

2994 of 3090 relevant lines covered (96.89%)

32.21 hits per line

Source Files on job webui - 28101823231.1
  • Tree
  • List 80
  • Changed 1
  • Source Changed 0
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 28101823231
  • 33ff0d9b on github
  • Prev Job for on main (#28100416076.3)
  • Next Job for on main (#28102688441.3)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc