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

dangernoodle-io / TaipanMiner / 28101823231
90%

Build:
DEFAULT BRANCH: main
Ran 24 Jun 2026 01:26PM UTC
Jobs 3
Files 107
Run time 1min
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: 90.226% (+0.03%) from 90.195%
28101823231

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)

2886 of 3627 branches covered (79.57%)

Branch coverage included in aggregate %.

2 of 2 new or added lines in 1 file covered. (100.0%)

1 existing line in 1 file now uncovered.

5385 of 5540 relevant lines covered (97.2%)

149095.44 hits per line

Coverage Regressions

Lines Coverage ∆ File
1
98.75
0.0% webui/miner/src/lib/settingsState.svelte.ts
Jobs
ID Job ID Ran Files Coverage
1 webui - 28101823231.1 24 Jun 2026 01:27PM UTC 80
91.31
GitHub Action Run
2 e2e - 28101823231.2 24 Jun 2026 01:28PM UTC 56
57.49
GitHub Action Run
3 native - 28101823231.3 24 Jun 2026 01:26PM UTC 27
91.42
GitHub Action Run
Source Files on build 28101823231
  • Tree
  • List 107
  • Changed 5
  • Source Changed 1
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #28101823231
  • 33ff0d9b on github
  • Prev Build on main (#28100416076)
  • Next Build on main (#28102688441)
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