From a768be22e635ac22cbaa7cd3e69cd60e24f96c8e Mon Sep 17 00:00:00 2001 From: woikos Date: Wed, 21 Jan 2026 16:27:13 +0100 Subject: [PATCH] Reduce WebSocket buffer sizes from 10MB to 64KB per connection (v0.52.12) Previous: 10MB read + 10MB write = 20MB per connection New: 64KB read + 64KB write = 128KB per connection With 100 connections: - Before: 2GB just for buffers - After: 12.5MB for buffers The read limit (SetReadLimit) still allows 10MB messages, but the internal buffers don't need to be that large. Files modified: - app/handle-websocket.go: Reduce buffer sizes - pkg/version/version: Bump to v0.52.12 Co-Authored-By: Claude Opus 4.5 --- app/handle-websocket.go | 6 ++++-- pkg/version/version | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/handle-websocket.go b/app/handle-websocket.go index 2cb3bac..34bb9f1 100644 --- a/app/handle-websocket.go +++ b/app/handle-websocket.go @@ -100,8 +100,10 @@ whitelist: var conn *websocket.Conn // Configure upgrader for this connection - upgrader.ReadBufferSize = int(DefaultMaxMessageSize) - upgrader.WriteBufferSize = int(DefaultMaxMessageSize) + // Use reasonable buffer sizes (64KB) instead of max message size (10MB) + // to prevent memory exhaustion with many connections + upgrader.ReadBufferSize = 64 * 1024 // 64KB + upgrader.WriteBufferSize = 64 * 1024 // 64KB if conn, err = upgrader.Upgrade(w, r, nil); chk.E(err) { log.E.F("websocket accept failed from %s: %v", remote, err) diff --git a/pkg/version/version b/pkg/version/version index ff37c8e..5714657 100644 --- a/pkg/version/version +++ b/pkg/version/version @@ -1 +1 @@ -v0.52.11 +v0.52.12