Snakeway v0.16.0
This release hardens the proxy ahead of new feature work. It fixes a defect that dropped query strings from proxied requests, tightens configuration validation, makes protocol negotiation explicit in the code, and expands the test suite substantially, guided by mutation testing.
Highlights
- Proxied requests now forward the query string to the upstream. Previously the query string was dropped from every proxied request.
- Configuration blocks that are present in a file are now always validated, even when their
enableflag is false. Invalid values that previously loaded silently now failconfig checkand startup. - HTTP version negotiation and WebSocket upgrade negotiation are now explicit state machines (
ProtocolModeandUpgradeState), documented in the new protocol negotiation internals page.
Added
- Internals documentation for protocol negotiation, request normalization, and an RFC quick reference.
- Mutation testing recipes (
just mutants,just mutants-diff) with a checked-in cargo-mutants configuration, for contributors. - A
just list-linesrecipe reporting lines of code per file, excluding tests.
Changed
- Present configuration blocks are always validated at error severity, disabled or not. This applies to device blocks and to the OTLP exporter settings.
health_checkvalues are now range constrained.failure_thresholdaccepts 1 to 10000 andunhealthy_cooldown_secondsaccepts 1 to 3600 seconds.- Upstream endpoint TLS checks are skipped when the upstream sets
verify = false. An IP-literal SNI is now accepted in that case, and the SNI is still sent in the handshake. - The
config inittemplates emit a valid example for the request rate limiting device, 20 requests per second over a 5 second window, in place of zero values that failed the template's own validation. - The configuration layer migrated to confval 0.7.3.
- Internal naming moved from "gateway" to "proxy" across the code and documentation.
Fixed
- The query string is forwarded to the upstream on proxied requests. This defect predates v0.15.1 and affected every proxied request that carried a query.
- The
config dumpand template generation paths were reworked on confval 0.7.x and are now covered by output-asserting tests. - Panic hygiene across the workspace.
unwrapandexpectare denied outside tests.
Upgrading
Run snakeway config check against your configuration before upgrading.
Two validation changes can reject a configuration that v0.15.1 loaded.
- A block that is present but disabled is now validated. Fix or remove any disabled block whose values are invalid.
health_checkvalues outside the new ranges fail to load. In particular, anunhealthy_cooldown_secondsabove 3600 must be reduced.
No configuration keys were added, renamed, or removed in this release.