Outcall
SpecificationsS006 · HTTP Proxy

Edge cases

S006 Edge Cases

IDScenarioExpected Behavior
S006-EC-001SNI absent from TLS ClientHelloFall back to hostname from the CONNECT request line. If that is an IP address, evaluate rules with the IP.
S006-EC-002Upstream connection refusedReturn HTTP 502 Bad Gateway to the client. Log the failure at warn level.
S006-EC-003Upstream DNS resolution failureReturn HTTP 502 Bad Gateway with a generic upstream-failure body that does not expose resolver internals.
S006-EC-004Client disconnects mid-tunnelClose the upstream connection. Clean up resources. No error response needed.
S006-EC-005Upstream disconnects mid-tunnelClose the client connection. Clean up resources. No error response needed (data already partially sent).
S006-EC-006Extremely large headers (> 8 KiB)Return HTTP 431 Request Header Fields Too Large. Do not forward.
S006-EC-007Non-standard HTTP method (e.g. PATCH, DELETE)Evaluate against the rule engine like any other method. The proxy does not restrict HTTP methods -- only the rule engine decides.
S006-EC-008Rule context construction or evaluation failsFail closed with a BLOCK decision. Do not forward traffic under an anonymous or partial policy context.
S006-EC-009CONNECT to a non-443 portReject known non-HTTPS service ports before policy evaluation. Other explicitly allowed TLS ports such as 8443 proceed using the full host:port.
S006-EC-010Proxy address not reachable from containerContainer HTTP client will fail to connect. This is a network configuration issue, not a proxy error. The proxy logs nothing (no connection received).
S006-EC-011HTTP/2 CONNECT (RFC 8441)Not supported. The proxy MUST operate at HTTP/1.1. HTTP/2 clients talking to the proxy MUST downgrade to HTTP/1.1.
S006-EC-012Rapid reconnect flood from a single containerThe max-connections limit applies globally. Individual connections are cheap. If the limit is hit, new connections receive 503. No per-client rate limiting in v1.
S006-EC-013Daemon shutdown with active tunnelsStop accepting new connections. Wait up to the grace period (default 5s) for active tunnels. After the grace period, forcibly close remaining tunnels.
S006-EC-014WebSocket or other HTTP Upgrade requestReturn HTTP 400 before opening an upstream connection. Upgrade tunneling is not supported.
S006-EC-015Source IP is not an Outcall-managed containerReturn HTTP 403 before rule evaluation. Generic allow rules cannot authorize an unknown peer.
S006-EC-016Target resolves only to restricted addressesReturn HTTP 403 unless the matched rule explicitly opts into private addresses.
S006-EC-017Ambiguous body framing, oversized body, or pipeliningReturn HTTP 400, 413, or 431 as appropriate before opening an upstream connection.

On this page