Skip to content

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 20:20
03f8729

0.1.0 (2026-10-09)

Features

  • --chained-proxy-backoff flag for retry backoff between chained proxies (a41c3e5)
  • --log-http / --log-http-json and log_http properties (2f790cf)
  • authenticate hook lets a Starlark script be the proxy authenticator (581fdbe)
  • build HttpFilters from lambdas (8fe1e28)
  • carry the connection id in log lines and record when connections are accepted (df0dac6)
  • digest.equal compares secrets in constant time (1fbc9a1)
  • extras: ConcurrencyLimiter caps exchanges in progress per key (7752ce8)
  • extras: HttpLogger logs whole requests and responses (8360483)
  • hardening, observability, scripting and LittleProxy test parity (91af61a)
  • hardening, observability, scripting and LittleProxy test parity (#3) (91af61a)
  • HTTP/2 version and per-stream flow contexts (303a0fb)
  • HTTP/2 WebSockets, CONNECT streams and TLS listener (phase 3b) (6a80673)
  • http2-codec: add field validation and flow-control accounting (ef41b14)
  • http2-codec: add HPACK encoder and decoder (17baf5d)
  • http2-codec: add HTTP/2 frame reader and writer (7b50bd7)
  • http2-codec: support RFC 8441 extended CONNECT (4eacef7)
  • JSON_EXTENDED access log with response source and timings (d203991)
  • let filters and a FailureResponder answer the proxy's own failures (301671f)
  • let MITM managers decide per client connection (7c6532f)
  • log TLS handshakes with their outcome and certificates (02abb53)
  • negotiate HTTP/2 on the proxy TLS listener (03c991b)
  • on_failure hook for Starlark scripts with Failure values (5746211)
  • optional backoff between chained proxy attempts (3348651)
  • per-request connect timeout from filters (1ab97bb)
  • pin TLS protocol versions on every TLS socket (30d64a6)
  • proxyToClientResponseSent hook, SelectiveFilters and HttpBodies.decodedPrefix (0407a16)
  • read-only script constants from Java and --script-var / --script-var-file (c098bad)
  • record per-exchange timings and report completed responses (98a48c3)
  • relay request and response bodies at once between HTTP/2 streams (146635e)
  • request-aware proxy authentication (41e7287)
  • res.source, res.upstream_status and ctx.timings for Starlark scripts (29598b5)
  • rewrite and drop WebSocket frames from filters and scripts (1b3b8f5)
  • serve h2c with prior knowledge on the plain listener (b1faed7)
  • serve HTTP/2 to clients on intercepted TLS (42299ac)
  • speak HTTP/2 to origin servers that negotiate h2 (386ee6d)
  • starlark: load() standard library modules in scripts (2b8fce8)
  • starlark: port starlarky's Python-compatible standard library (3f3ef23)
  • starlark: req.http_version (98f1c23)
  • starlark: typed scripts (8133dcb)
  • starlark: vendor starlarky's Larky runtime on the JDK (e4fc255)
  • strip h3 alternatives from Alt-Svc when intercepting or transparent (b5a09c9)
  • strip tracing headers from requests sent upstream (7117c1a)
  • tell trackers where each response came from and what the server sent (9ed0a90)
  • tunnel CONNECT and WebSockets through HTTP/2 streams (e36748b)
  • warn when HTTP/2 is enabled without interception (03bdc92)
  • withLittleProxyCompatibility() for filters that depend on LittleProxy's behaviour (a1f63be)

Bug Fixes

  • a chained proxy whose name does not resolve is a ConnectFailed (e6e5f62)
  • accept port 0 in the address property (38ec195)
  • answer frames on HTTP/2 streams the client closed with STREAM_CLOSED (1ddffd6)
  • bound TLS handshakes with an overall deadline (ebe82e7)
  • call proxyToServerConnectionSSLHandshakeStarted for encrypted chained proxies (5f0b1d8)
  • credit the connection window for a malformed stream's DATA (c3e4ed9)
  • discard the server's body when proxyToClientResponse replaces a streamed response (543de40)
  • do not report proxyToServerConnectionFailed when the server name did not resolve (85533e0)
  • end an HTTP/2 stream with the head of an empty response (414490f)
  • end bodiless requests with a LastHttpContent for request filters (fa93583)
  • frame filter-made full responses by the response, not the client stream (e97b3f1)
  • keep PROXY-header connections out of the shared pool (7993ab2)
  • log from built filters returned by a lambda filters source (d68774c)
  • name the option when a launcher value is invalid (4c7ef6f)
  • plain-text error bodies that do not echo the request (4212e7d)
  • reject a request that cannot start an HTTP request line without waiting (7bde1e1)
  • require CRLF line endings in requests (cd56b7a)
  • resolve an unresolved address returned by proxyToServerResolutionStarted (f95589a)
  • response framing, strict chunk sizes, inflater release, single stop (93af535)
  • send one RST_STREAM per reset stream (5f60c22)
  • send the PROXY header where LittleProxy does (a4137df)
  • tunnel a MITM CONNECT whose server does not speak TLS (e5855cc)

Documentation

  • describe HTTP/2 tunnels, WebSocket bridging and TLS listeners (042c6d4)
  • describe the exchange logic and transport split (8df3b80)
  • describe the stripped tracing headers by name (f98265b)
  • document authentication beyond Basic and per-connection interception (2a72369)
  • HTTP/2 to clients on intercepted TLS (f06a8ef)
  • HTTP/2 to servers, gRPC, h2c and h2spec (a48442d)
  • HTTP/3 and QUIC bypass, Alt-Svc stripping and blocking UDP/443 (7e16afd)
  • http2-codec: describe the module, its API, limits and scope (b557c27)
  • point LittleProxy timing-map users to FlowContext.timings() (b947695)
  • request/response logging with HttpLogger (5e5f35d)
  • standard library for Starlark scripts (55fdead)
  • Starlark failure handling, authentication, constants and timings, with tested examples (dcafeb6)