Skip to content

Runtime fixes 5/5: Buffer HTTP streams and stop after send failures - #435

Merged
guido4096 merged 3 commits into
danielkucera:masterfrom
guido4096:fix/runtime-http-streaming
Nov 1, 2026
Merged

guido4096 merged 3 commits into
danielkucera:masterfrom
guido4096:fix/runtime-http-streaming

Conversation

@guido4096

@guido4096 guido4096 commented Oct 31, 2026 •

Copy link
Copy Markdown
Collaborator

Streaming endpoints sent many small fragments and continued attempting socket writes after a send failure. This could repeat socket waits for a disconnected or stalled client. The configuration-drift handler also terminated its HTTP response before its JSON scopes emitted their closing bytes.

Add a shared 1,024-byte chunk buffer that stops socket output after the first failure and returns that error to the HTTP server. Apply it to streaming endpoints and complete drift JSON before terminating the response. Reduce HTTP send/receive timeouts from 10/10 seconds to 3/5 seconds.

Validation

  • 174 host tests passed on this standalone branch (macOS, POSIX enabled, original pinned eBUS revision f730dce).
  • Whitespace checks passed. CI and a fresh firmware build for this isolated branch are pending.
  • For the standalone macOS test run, the two mock-file fixes from part 1/5 were applied as temporary, uncommitted test-only overrides. Those files are not included in this PR.

Regressions cover preserved payload bytes (including embedded NULs), chunk coalescing, response termination, failures during streaming/final flush/termination, and valid configuration-drift JSON.

Device checks before marking ready

  • Cancel or disconnect a streaming request, then confirm subsequent requests recover promptly.
  • Check normal and slower Wi-Fi clients, configuration/command operations and firmware uploads with the shorter timeouts.
  • Check HTTP-task stack margin with the added 1,024-byte buffer and sustained operation.

No on-device latency improvement or soak-test result is claimed here.

Related runtime fixes

Part 5/5 of the single-commit replacements for #430, split at the maintainer's request. Every PR targets master directly and contains only its corresponding change.

Part Scope PR / branch
1/5 Correct host-test mocks #431
2/5 Bound Logs page retention #432
3/5 Schedule diagnostics by elapsed time #433
4/5 Protect string-pool IDs and concurrent access #434
5/5 Buffer HTTP streams and stop after send failures #435

Suggested merge order: the host-test mock fix first, then the other four changes independently. The five patches together reconstruct the exact tracked file tree of #430.

Source commit in #430: 50a798d.

Share bounded chunk buffering across streaming endpoints, return send errors without retrying, and shorten socket waits. Finish drift JSON before terminating its response. Test payload preservation, failed sends and valid response termination.
@guido4096
guido4096 force-pushed the fix/runtime-http-streaming branch from ba0f89f to 4da04fd Compare October 31, 2026 20:07
@guido4096

Copy link
Copy Markdown
Collaborator Author

did the testing on my device, so far no problems detected, UI still responsive after 2 days.

@guido4096
guido4096 merged commit e6aa39e into danielkucera:master Nov 1, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants