Skip to content

Send pool DELETE requests without a JSON body - #22

Merged
sandover merged 1 commit into
mainfrom
codex/bodyless-delete
Oct 2, 2026
Merged

sandover merged 1 commit into
mainfrom
codex/bodyless-delete

Conversation

@sandover

@sandover sandover commented Oct 2, 2026

Copy link
Copy Markdown
Owner

The native Rust client sent a four-byte JSON null body with pool DELETE requests. The server's delete handler ignores request bodies, so Hyper could close the TLS connection while the client read the response. On macOS this surfaced as Error encountered in a header with OS error 22, including scheduled CI run 499.

Send DELETE without a request body, like GET. Add a deterministic wire regression that checks both requests have zero body bytes and use the same connection. The test drains unexpected bodies before asserting, so the original client fails on [4, 0] rather than relying on the intermittent socket race. It bounds accept/read/write waits and joins its worker before client assertions.

Diagnosis reproduced the exact macOS error with a valid 29.999802-second socket timeout. A temporary bodyless client passed 2,000 deletes; delaying the original body reproduced the error immediately even though deletion had succeeded. Independently consuming that delayed body on the server removed the failure. This change adds no retries or dependency updates and preserves authentication, TLS verification, and request deadlines.

Validation:

  • Regression fails against original request behavior and passes with this change.
  • Original secure_sharing::native_key_connects_and_reuses_server_identity passes unchanged.
  • just release-gate passes, including just check, format, Clippy, Rust tests, ABI, conformance, language bindings, UI smoke, and package installation smoke.
  • Independent Sol High review: no remaining findings after bounding the test's initial accept.

- Avoid the unused null payload that can close HTTPS responses during Hyper's unread-body handling.
- Preserve authentication, TLS verification, deadlines, and JSON response decoding.
- Add a deterministic wire regression for empty DELETE/GET bodies and connection reuse, with bounded waits and worker cleanup.
- Validate with the full release gate and independent Sol High review.
@sandover
sandover merged commit d8b8e67 into main Oct 2, 2026
11 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.

1 participant