🚀 This release includes a security fix for a vulnerability discovered in replay attack protection.
Without this fix, an attacker can craft a packet with high sequence number to a client or server, and stop all future packets in the connection from being received.
🚀 Please update to this release ASAP!
🚀 Changes in this release:
- Per-client timeouts can now be specified in the connect token ⏱ 2. Negative timeout values disable timeout (useful for debugging)
- Negative expire seconds disables token expiry (useful for debugging)
- Added netcode_client_get_port and netcode_server_get_port to get the bound socket ports when the bind address has port 0. 🚀 5. Golang and Rust implementations have been moved out to their own repositories so they can have different release cycles. ⚡️ 6. To implement per-client timeouts the code has been updated to NETCODE 1.01 spec.
This is the initial release of netcode.io
- Secure client connection based around connect tokens
- Challenge/response for protection against spoofed client IP headers
- Protection against being used in DDoS packet amplification attacks in request/response
- Encrypted and signed UDP packets once connection is established.
- Replay protection so attackers can't intercept and replay old packets. 🌲 6. Support for user overrides for allocator, logging functions and assert function. 💅 7. Support for loopback client connections with server, for example for local client/server or singleplayer in Call of Duty, Titanfall style.
✅ This code has been extensively unit tested, soak tested as well as having been successfully integrated into yojimbo for several months now.
netcode.io is now production ready!