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

dangernoodle-io / breadboard / 28635226871
100%

Build:
DEFAULT BRANCH: main
Ran 03 Jul 2026 02:53AM UTC
Jobs 1
Files 45
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

03 Jul 2026 02:52AM UTC coverage: 100.0%. Remained the same
28635226871

push

github

web-flow
fix(bb_sse_writer,bb_http): fast SSE abort-detect + force-close to prevent CLOSE_WAIT/DMA leak (B1-517) (#678)

Root cause: aborted SSE connections left lwIP PCBs parked in CLOSE_WAIT
because peer-abort detection was gated on the 15s heartbeat interval and
teardown always used a graceful close — a dead peer's fd sat idle for up
to 15s per connection, and its eventual graceful FIN exchange still parked
the PCB in CLOSE_WAIT rather than freeing it. On tight (no-PSRAM) boards
this exhausted the DMA pool and hard-hung the device.

Fix:
- bb_http owns two new async-socket primitives (socket-lifecycle stays
  SSOT there): bb_http_req_peer_alive() (non-blocking MSG_PEEK probe) and
  bb_http_req_async_abort() (SO_LINGER{on,0} then complete, forcing an RST
  on next httpd session-cleanup instead of a graceful FIN->CLOSE_WAIT).
- bb_sse_writer polls peer liveness on a ~1s cadence
  (CONFIG_BB_SSE_ABORT_POLL_MS) decoupled from the heartbeat interval, and
  routes teardown through bb_http_req_async_abort() on a confirmed dead
  peer instead of the plain graceful complete.

Consumer requirement: CONFIG_LWIP_SO_LINGER=y is required for the RST-based
teardown to actually free the socket; added to all breadboard smoke
sdkconfigs. A build missing this Kconfig gets a #warning from
platform/espidf/bb_http/bb_http.c, which is a hard build error under
-Werror (the smoke build and typical consumers use -Werror). TaipanMiner
must set CONFIG_LWIP_SO_LINGER=y at re-pin.

HW-validated on .32: CLOSE_WAIT clears in ~0.4s, DMA largest_free_block
holds steady, no hard-hang under repeated abrupt-disconnect load, and
graceful SSE close is unaffected.

B1-484 interaction: faster slot reuse from this fix raises the trigger
frequency of the pre-existing bb_event_routes reuse race (B1-484), fixed
separately by jae/b1-484-sse-pool-reap (PR-A). Do not roll the fleet with
this change alone — B1-517 and PR-A must ship together. References B1-484.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

2037 of 2037 branches covered (100.0%)

Branch coverage included in aggregate %.

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

3525 of 3525 relevant lines covered (100.0%)

1226.6 hits per line

Jobs
ID Job ID Ran Files Coverage
1 28635226871.1 03 Jul 2026 02:53AM UTC 45
100.0
GitHub Action Run
Source Files on build 28635226871
  • Tree
  • List 45
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #28635226871
  • 798bcb46 on github
  • Prev Build on main (#28634468772)
  • Next Build on main (#28635630801)
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