v4.4.1
- Add TCPKeepAliveIdle, TCPKeepAliveInterval, and TCPKeepAliveCount config options to enable TCP keepalive probing on accepted client sockets. Enabled by default with 60s idle / 30s interval / 4 probes; dead peers are detected within ~3 min. Set TCPKeepAliveIdle to 0 to disable. Settable via RS_TCP_KEEPALIVE_IDLE, RS_TCP_KEEPALIVE_INTERVAL, RS_TCP_KEEPALIVE_COUNT environment variables.
Note
The default setting of TCP keepalive options are a behavior change from previous versions.
- Significant hardening of HTTP handling of user input.
- Fix multiple edge case failures, on OOM or esoteric/malicious usage.
- Add per-call PCRE2 match context with limits for client-supplied regex patterns.
- Fix race condition where ClientInfo could be dereferenced during client cleanup.
- Fix sending success-indicating "OK" on internal lookup error.
- Add empty ring guards to RingAfter() and RingAfterRev().
- Fail fast on malformed READ command for DataLink to avoid multiple ERRORS.
- Fix race condition in GetStreamNode() for duplicates or rebalancing.
- Protect against <= 0 values for UsageLogInterval.
- Avoid negative values in Content-Length HTTP response headers.
- Protect ring reads against corrupt/truncated ring buffers.
- Document VolatileRing/RS_VOLATILE_RING config option.