Skip to content

feat: add streaming uploads, proxies, and HTTP/2 - #8

Merged
Prodesire merged 7 commits into
mainfrom
feat/0.2.0
Oct 10, 2026
Merged

Prodesire merged 7 commits into
mainfrom
feat/0.2.0

Conversation

@Prodesire

@Prodesire Prodesire commented Oct 10, 2026 •

Copy link
Copy Markdown
Member

Req can now send file-backed and finite chunked request bodies, upload multipart files with form fields, and negotiate HTTP/2. Clients gain explicit proxy and connection-pool controls, while concurrent HTTP/2 streams share physical connections and stream cancellation preserves healthy peers.

Changes

  • Add RequestBody and UploadFile with bounded file reads, multipart encoding, redirect replay, and one-shot consumption guards.
  • Support HTTP and HTTPS proxies, CONNECT tunneling, environment proxy/CA settings, Limits, and pool timeouts.
  • Add Client(http1=True, http2=False) protocol flags, ALPN negotiation, HTTP/1.1 fallback, and HTTP/2-only mode with capability checks.
  • Correct HTTP/2 connection counting and upload rewind behavior, including refused-stream retries.
  • Replace compatibility inventories with direct Mojo test discovery and organize cases under models, client, transports, and uploads; retain the existing third-party license notice.
  • Add TLS HTTP/2 fixtures and CI test dependencies. Remove the version qualifier from both READMEs.
  • Preserve Mojo string origins through native calls and construct safe empty proxy defaults, fixing Linux TLS and low-level stream failures.
  • Complete peer GOAWAY shutdown in HTTP/2 fixtures and classify incomplete HTTP/2 responses as protocol errors across nghttp2 versions.

Validation

  • make test: 384 passed, 0 failed, 0 skipped on local macOS, Ubuntu 24.04 ARM64, and the GitHub macOS 26.6.2 runner using system libcurl 8.7.1/nghttp2 1.68.1.
  • make test-package: precompiled, isolated consumer and native-loading checks passed, including an unavailable HTTP/2 capability fixture.
  • HTTP/2 suite against libcurl 8.10.1: 44 passed; HTTP/2-only negotiation repeated successfully 10 times.
  • Latest PR CI at 33f4186: all six test/build/package jobs passed. Each test matrix job reports 384 passed, 0 failed, 0 skipped.
  • git diff --check: passed.

HTTP/2-only mode requires libcurl 8.10 or later; negotiation with HTTP/1.1 fallback works with the system libcurl 8.7.1. The latest PR CI matrix covers Ubuntu 24.04 x86_64, Ubuntu 24.04 ARM64, and macOS 26.

@Prodesire
Prodesire merged commit 31d4b19 into main Oct 10, 2026
7 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