Skip to content

v0.3.0

Latest

Choose a tag to compare

@samuelloranger samuelloranger released this 12 Jul 13:13
· 3 commits to main since this release

Security & correctness fixes

  • Unbounded allocation from unauthenticated clients — packet, string, and RCON lengths are now bounds-checked (rejecting negative/oversized VarInts) before allocating, and handshake/status/login reads now time out (handshake_timeout_secs, default 10s) instead of holding connections open indefinitely.
  • Lossy protocol re-encoding — the proxy now forwards the client's original handshake and Login Start packets byte-for-byte instead of reconstructing them, fixing broken support for protocol versions other than 1.20.2+ and no longer stripping modded (Forge/Fabric) handshake markers.
  • Lifecycle races — a client that disconnects while the container is still booting no longer leaves it running forever with nothing scheduled to stop it. A failed idle-shutdown no longer reports the server as Stopped while it's actually still running. A login arriving while an idle shutdown is in progress now waits for it to resolve instead of being forwarded into a container that's mid-stop. A failed container start now notifies a waiting client immediately instead of after the full startup timeout.

Maintenance

  • anyhow bumped past RUSTSEC-2026-0190; unused thiserror dependency removed; tokio features narrowed to only what's used.
  • Declared and CI-enforced MSRV: Rust 1.88+.

Docker

ghcr.io/samuelloranger/redoxide:v0.3.0
ghcr.io/samuelloranger/redoxide:0.3
ghcr.io/samuelloranger/redoxide:latest