From 41f9b486df59fec6bfa7333247deaaba9d185fb8 Mon Sep 17 00:00:00 2001 From: sanjomo Date: Sat, 6 Jun 2026 14:40:48 +0530 Subject: [PATCH 1/2] support to configure decompression buffer removed deprecated method which always support unlimited buffer, user can use decompressionBufferSize to set the limits --- .../com/socketio4j/socketio/BasicConfiguration.java | 10 ++++++++++ .../socketio/SocketIOChannelInitializer.java | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/netty-socketio-core/src/main/java/com/socketio4j/socketio/BasicConfiguration.java b/netty-socketio-core/src/main/java/com/socketio4j/socketio/BasicConfiguration.java index 8de03a02..43a8bb76 100644 --- a/netty-socketio-core/src/main/java/com/socketio4j/socketio/BasicConfiguration.java +++ b/netty-socketio-core/src/main/java/com/socketio4j/socketio/BasicConfiguration.java @@ -67,6 +67,15 @@ public abstract class BasicConfiguration { protected boolean httpCompression = true; protected boolean websocketCompression = true; + protected int decompressionBufferSize = 0; + + public int getDecompressionBufferSize() { + return decompressionBufferSize; + } + + public void setDecompressionBufferSize(int decompressionBufferSize) { + this.decompressionBufferSize = decompressionBufferSize; + } protected boolean randomSession = false; @@ -135,6 +144,7 @@ protected BasicConfiguration(BasicConfiguration conf) { setHttpCompression(conf.isHttpCompression()); setWebsocketCompression(conf.isWebsocketCompression()); + setDecompressionBufferSize(conf.getDecompressionBufferSize()); setRandomSession(conf.randomSession); setNeedClientAuth(conf.isNeedClientAuth()); setMetrics(conf.getMetrics()); diff --git a/netty-socketio-core/src/main/java/com/socketio4j/socketio/SocketIOChannelInitializer.java b/netty-socketio-core/src/main/java/com/socketio4j/socketio/SocketIOChannelInitializer.java index 97910082..727a3908 100644 --- a/netty-socketio-core/src/main/java/com/socketio4j/socketio/SocketIOChannelInitializer.java +++ b/netty-socketio-core/src/main/java/com/socketio4j/socketio/SocketIOChannelInitializer.java @@ -195,7 +195,7 @@ protected Object newContinueResponse(HttpMessage start, int maxContentLength, pipeline.addLast(AUTHORIZE_HANDLER, authorizeHandler); pipeline.addLast(XHR_POLLING_TRANSPORT, xhrPollingTransport); if (configuration.isWebsocketCompression()) { - pipeline.addLast(WEB_SOCKET_TRANSPORT_COMPRESSION, new WebSocketServerCompressionHandler()); + pipeline.addLast(WEB_SOCKET_TRANSPORT_COMPRESSION, new WebSocketServerCompressionHandler(configuration.getDecompressionBufferSize())); } pipeline.addLast(WEB_SOCKET_TRANSPORT, webSocketTransport); From a93c27078912780f19d88ba7ae20dcc1c4b1eefc Mon Sep 17 00:00:00 2001 From: sanjomo Date: Sat, 6 Jun 2026 14:51:41 +0530 Subject: [PATCH 2/2] Update BasicConfiguration.java --- .../socketio/BasicConfiguration.java | 26 ++++++++++++++----- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/netty-socketio-core/src/main/java/com/socketio4j/socketio/BasicConfiguration.java b/netty-socketio-core/src/main/java/com/socketio4j/socketio/BasicConfiguration.java index 43a8bb76..2266e7be 100644 --- a/netty-socketio-core/src/main/java/com/socketio4j/socketio/BasicConfiguration.java +++ b/netty-socketio-core/src/main/java/com/socketio4j/socketio/BasicConfiguration.java @@ -69,13 +69,6 @@ public abstract class BasicConfiguration { protected boolean websocketCompression = true; protected int decompressionBufferSize = 0; - public int getDecompressionBufferSize() { - return decompressionBufferSize; - } - - public void setDecompressionBufferSize(int decompressionBufferSize) { - this.decompressionBufferSize = decompressionBufferSize; - } protected boolean randomSession = false; @@ -462,6 +455,25 @@ public void setWebsocketCompression(boolean websocketCompression) { this.websocketCompression = websocketCompression; } + public int getDecompressionBufferSize() { + return decompressionBufferSize; + } + + /** + * Set the maximum decompression buffer size for WebSocket compression. + * Used to limit memory consumption during WebSocket message decompression. + *

+ * Default is 0 which means unlimited + * + * `@param` decompressionBufferSize - buffer size in bytes, or 0 for [unlimited/default] + */ + public void setDecompressionBufferSize(int decompressionBufferSize) { + if (decompressionBufferSize < 0) { + throw new IllegalArgumentException("decompressionBufferSize must be non-negative"); + } + this.decompressionBufferSize = decompressionBufferSize; + } + public boolean isWebsocketCompression() { return websocketCompression; }