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

dangernoodle-io / breadboard / 30970481757
97%

Build:
DEFAULT BRANCH: main
Ran 05 Aug 2026 02:52AM UTC
Jobs 1
Files 216
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

05 Aug 2026 02:49AM UTC coverage: 96.928% (+0.01%) from 96.914%
30970481757

push

github

web-flow
fix: unify bb_data_http's SSE send-failure contract as fatal-abort, WS as retriable (B1-1424, B1-1429) (#1230)

The SSE connect-time preamble write and the flush loop's send-failure
handling were fixed separately and landed on incompatible contracts: the
preamble fix made a failed write non-fatal (log + fall through), while
the flush loop retried EVERY send_fn failure identically regardless of
transport. Both are unsafe for SSE: bb_http_resp_send_chunk() wraps
ESP-IDF's httpd_resp_send_chunk(), whose first call on a response issues
several separate httpd_send_all() writes (status line, headers,
end-of-headers CRLF, chunk-size line, body, trailing CRLF) and only
marks the response's internal first_chunk_sent AFTER all of them
succeed; httpd_send_all() discards the partial byte count on a failed
write, so a cold-socket EAGAIN mid-header-block can leave some bytes
already on the wire with first_chunk_sent still false. Retrying (or
"logging and continuing") after that failure lets the next chunk write
re-send the entire status line + header block on top of what is already
there -- a connection that looks healthy but delivers duplicated/garbled
headers interleaved with body bytes forever, with no resync token in
HTTP chunked encoding to recover. Retrying an SSE send failure is unsafe
at every position, not just the connect-time preamble's.

This collapses both fixes into one coherent contract instead:

- The connect-time SSE preamble write is REMOVED outright (not made
  non-fatal): it is purely cosmetic, nothing downstream depends on
  receiving it, and ESP-IDF httpd commits response headers on whichever
  chunk write happens first -- preamble or the broadcaster's own first
  real frame. The three pre-existing connect-time setsockopt() calls now
  check their return values and log a warning on failure (previously
  unchecked).
- bb_data_http_send_fn's return contract (bb_data_http.h) now
  distinguishes RETRIABLE (BB_ERR_TIMEOUT -- send_fn certifies nothi... (continued)

8391 of 8950 branches covered (93.75%)

Branch coverage included in aggregate %.

56 of 56 new or added lines in 2 files covered. (100.0%)

14138 of 14293 relevant lines covered (98.92%)

2606.47 hits per line

Jobs
ID Job ID Ran Files Coverage
1 30970481757.1 05 Aug 2026 02:52AM UTC 216
96.93
GitHub Action Run
Source Files on build 30970481757
  • Tree
  • List 216
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #30970481757
  • 577adb3e on github
  • Prev Build on main (#30964904904)
  • Next Build on main (#30972634497)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc