mirror of
https://github.com/livekit/livekit.git
synced 2026-08-14 20:09:45 +00:00
* Add configurable read-message size limit on signalling WebSockets Set a read limit on both the client-facing (/rtc) and agent worker WebSocket connections so an oversized frame is rejected by the transport before being buffered. The limits are operator-tunable via signal_message_size_limit and agent_signal_message_size_limit, both defaulting to 2 MiB (0 disables). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Add tests for signalling WebSocket read-message size limit Cover the configurable signal_message_size_limit added in the prior commit: - config: assert both limits default to 2 MiB and that a YAML override (including 0 to disable) is parsed correctly. - full-path integration: a real client connects to /rtc on a single-node server and an oversized frame is rejected by the transport with a 1009 close; a 0 limit leaves the connection unbounded and signalling proceeds. Adds setupSingleNodeTestWithConfig so a single-node server can be started with config overrides. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * Bound decompressed size of signalling WebSocket messages conn.SetReadLimit only accounts for the compressed bytes read off the wire, and the client-facing /rtc upgrader negotiates permessage-deflate, so a small compressed frame could still expand into a much larger buffer once inflated. Enforce the same limit on the decompressed message by reading through NextReader + io.LimitReader in WSSignalConnection instead of the unbounded ReadMessage. The transport-level SetReadLimit is kept as the cheap wire-level guard; the new check is the decompressed-size backstop. Adds NextReader to the WebsocketClient interface (regenerated fake) and a unit test plus permessage-deflate integration tests covering the amplification case. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>