Skip to main content

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 enable flag is false. Invalid values that previously loaded silently now fail config check and startup.
  • HTTP version negotiation and WebSocket upgrade negotiation are now explicit state machines (ProtocolMode and UpgradeState), 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-lines recipe 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_check values are now range constrained. failure_threshold accepts 1 to 10000 and unhealthy_cooldown_seconds accepts 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 init templates 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 dump and template generation paths were reworked on confval 0.7.x and are now covered by output-asserting tests.
  • Panic hygiene across the workspace. unwrap and expect are 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.

  1. A block that is present but disabled is now validated. Fix or remove any disabled block whose values are invalid.
  2. health_check values outside the new ranges fail to load. In particular, an unhealthy_cooldown_seconds above 3600 must be reduced.

No configuration keys were added, renamed, or removed in this release.