Repository navigation
Description
Description
Main constructs AxumProxyClient::try_new() per converted request (crates/edgezero-adapter-axum/src/request.rs:66), fixes a 30-second reqwest timeout and uses replacing response-header insertion (crates/edgezero-adapter-axum/src/proxy.rs:28). PR #275 retires this client in favor of shared native outbound transport, explicit wire policies and streaming. Remaining work is integrated pooling/wire/configuration acceptance.
Steps to reproduce
Proxy repeated requests to a local origin recording accepted connections, two Set-Cookie values, Connection-nominated fields and Host. Exercise cross-origin redirects, sensitive headers, decoding, deadlines, connection failures and buffered/streamed bodies through the final server path.
Expected behavior
Incoming requests share outbound pools and preserve permitted repeated fields/body bytes. Redirect, timeout, TLS, destination and retry behavior are explicit; failures remain safe and release resources.
Impact
Per-request clients lose connection reuse; replacing repeated fields can break cookies and inherited client defaults can alter proxy semantics. Open replacement code is not merged production evidence.
Proposed fix
Adopt accepted #275 HttpClient/AxumOutboundClient contracts and verify the final native service instead of restoring proxy.rs. Reuse existing wire/framing/header policies; add only missing tests or configuration/startup gaps. Check transport initialization failure before readiness with #392/#396. Keep TLS verification enabled and retries explicit. Bounded transport acceptance depends on #394; pooling/header preparation can proceed independently.
Done when
- Re-audit the accepted PR feat: implement portable outbound HTTP and request lifecycle contracts #275 implementation and record which checks are already covered. Add only residual changes and missing production acceptance evidence.
- The accepted standard server path uses its shared outbound transport, and a local origin test proves connection reuse across incoming requests.
- Two Set-Cookie response values survive the complete proxy path unchanged.
- Tests cover hop-by-hop filtering, Connection-nominated headers, Host handling, and header-value preservation.
- Redirect behavior is explicit and tested, including cross-origin redirects and sensitive headers.
- Configured connect/request deadlines and connection failures return safe responses and release work.
- Existing buffered-body and new streamed-body proxy tests pass.
- Default TLS verification, destination-policy ownership, and retry behavior are documented.
Related
- Parent Make the Axum adapter production-ready for self-hosted deployments #391. Foundation PR feat: implement portable outbound HTTP and request lifecycle contracts #275 / Implement portable outbound HTTP and request lifecycle contracts #436; Axum: preserve incremental streaming with bounded backpressure #394 bounded streaming.
- Shared backend requirements Dynamic Backend Abstraction #79, Backend TLS options #81, Backend timeout options #82, Axum backend factory #85; incoming proxy trust Axum: add safe production diagnostics and trusted-proxy handling #397.
- No separate published PR currently completes all Axum: reuse outbound clients and preserve proxy HTTP semantics #395 production acceptance.
Activity