diff --git a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java index 13cab1082..8799d50b7 100644 --- a/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java +++ b/service/src/main/java/org/whispersystems/textsecuregcm/WhisperServerService.java @@ -63,6 +63,8 @@ import java.util.concurrent.ThreadPoolExecutor; import java.util.function.Function; import java.util.stream.Stream; import javax.annotation.Nullable; +import org.eclipse.jetty.websocket.core.WebSocketComponents; +import org.eclipse.jetty.websocket.core.server.WebSocketServerComponents; import org.eclipse.jetty.websocket.server.config.JettyWebSocketServletContainerInitializer; import org.glassfish.jersey.server.ServerProperties; import org.signal.i18n.HeaderControlledResourceBundleLookup; @@ -1165,7 +1167,13 @@ public class WhisperServerService extends Application { + if (config.getWebSocketConfiguration().isDisablePerMessageDeflate()) { + WebSocketComponents components = + WebSocketServerComponents.getWebSocketComponents(environment.getApplicationContext().getServletContext()); + components.getExtensionRegistry().unregister("permessage-deflate"); + } + }); WebSocketResourceProviderFactory webSocketServlet = new WebSocketResourceProviderFactory<>( webSocketEnvironment, AuthenticatedDevice.class, config.getWebSocketConfiguration(), diff --git a/websocket-resources/src/main/java/org/whispersystems/websocket/configuration/WebSocketConfiguration.java b/websocket-resources/src/main/java/org/whispersystems/websocket/configuration/WebSocketConfiguration.java index b2c86ab96..6dcf45910 100644 --- a/websocket-resources/src/main/java/org/whispersystems/websocket/configuration/WebSocketConfiguration.java +++ b/websocket-resources/src/main/java/org/whispersystems/websocket/configuration/WebSocketConfiguration.java @@ -28,6 +28,10 @@ public class WebSocketConfiguration { @JsonProperty private int maxTextMessageSize = 512 * 1024; + @Valid + @JsonProperty + private boolean disablePerMessageDeflate = false; + public WebsocketRequestLoggerFactory getRequestLog() { return requestLog; } @@ -39,4 +43,8 @@ public class WebSocketConfiguration { public int getMaxTextMessageSize() { return maxTextMessageSize; } + + public boolean isDisablePerMessageDeflate() { + return disablePerMessageDeflate; + } }