github Shadowner/Infrarust v1.6.0
v1.6.0 - Stability, ZeroCopy & Legacy Support

latest releases: v2.0.0-alpha.6, v2.0.0-alpha.5, v2.0.0-alpha.4...
3 months ago

The performance and compatibility update is here! 🎉

These features have been asked through the Discord server, feel free to join to share some feature ideas!

🌟 Major New Features

🚀 Zero Copy Passthrough Mode

A new proxy mode that lets data flow directly between client and server at the OS level, no middleman processing. Perfect for passthrough setups where you want maximum performance with minimal overhead.

proxyMode: zerocopy_passthrough
  • Data never passes through userspace, the kernel handles it all
  • Players still appear in /list and can be /kicked
  • Logs total bytes transferred when connections close
  • Linux only - other platforms continue using standard passthrough mode

đŸ•šī¸ Legacy Protocol Support (Beta 1.8 → 1.6.x)

Infrarust now supports EVERY Minecraft version from Beta 1.8 to Latest!

Old Minecraft clients use a completely different protocol, and Infrarust now detects and handles all of them automatically:

Client Version Support
Beta 1.8 – 1.3 ✅ Ping + Login
1.4 – 1.5 ✅ Ping + Login
1.6.x ✅ Ping + Login
1.7+ ✅ Already supported
  • Zero configuration - legacy clients are detected automatically
  • Server list ping - old clients see proper MOTD responses in their format
  • Login & play - legacy clients connect through to backend servers seamlessly
  • Smart MOTD conversion - modern status responses are automatically converted to legacy format

Be aware that Beta 1.8 through 1.5 don't send any host to fetch the correct MOTD, so the default MOTD encourage the player to connect to join the server.

🔀 Domain Rewriting

New rewriteDomain option for proxy-to-domain setups! When forwarding to another domain, the handshake domain is automatically rewritten to match the backend address.

domains:
  - "play.myserver.com"
addresses:
  - "downstream-proxy.example.com:25565"
rewriteDomain: true  # Handshake will use "downstream-proxy.example.com"
  • Automatically extracts the hostname from your first address
  • Also available as backendDomain if you need to set a custom value
  • Works with both passthrough and zerocopy_passthrough modes

🔧 Fixes & Improvements

🧠 Memory Retention Fix

Fixed a memory leak that occurred when clients connected but took too long to send a request (port scanners, idle connections, etc.). Connections now time out cleanly instead of hanging around.

# Connection timeouts (in config.yaml)
handshake_timeout_secs: 10        # Default: 10 seconds
status_request_timeout_secs: 10   # Default: 10 seconds
  • Connections that don't send data within the timeout are cleaned up automatically
  • Status request deduplication prevents memory buildup under high request spam
  • Configurable from the global config to fit your needs

Don't set it too low or you might timeout legitimate request.

🐛 Other Fixes

  • Formatting and code quality cleanup across the board

🔄 Migration & Compatibility

Everything is backward compatible!

  • Modern clients (1.7+) are completely unaffected
  • Legacy support is automatic - no config changes needed
  • Zero copy mode is opt-in via proxyMode: zerocopy_passthrough
  • rewriteDomain is opt-in - existing configs work as before
  • Timeout defaults match previous behavior (10 seconds)

Don't miss a new Infrarust release

NewReleases is sending notifications on new releases.