diff --git a/ktor-shared/ktor-websockets/jvm/src/io/ktor/websocket/WebSocketDeflateExtension.kt b/ktor-shared/ktor-websockets/jvm/src/io/ktor/websocket/WebSocketDeflateExtension.kt index 62155530c0..3e41b97a60 100644 --- a/ktor-shared/ktor-websockets/jvm/src/io/ktor/websocket/WebSocketDeflateExtension.kt +++ b/ktor-shared/ktor-websockets/jvm/src/io/ktor/websocket/WebSocketDeflateExtension.kt @@ -173,8 +173,9 @@ public class WebSocketDeflateExtension internal constructor( * Configure which protocols should send the client. */ public fun configureProtocols(block: (protocols: MutableList) -> Unit) { + val old = manualConfig manualConfig = { - manualConfig(it) + old(it) block(it) } } diff --git a/ktor-shared/ktor-websockets/jvm/test/WebSocketDeflateTest.kt b/ktor-shared/ktor-websockets/jvm/test/WebSocketDeflateTest.kt index 1ac0ad401d..5c12043236 100644 --- a/ktor-shared/ktor-websockets/jvm/test/WebSocketDeflateTest.kt +++ b/ktor-shared/ktor-websockets/jvm/test/WebSocketDeflateTest.kt @@ -60,4 +60,16 @@ class WebSocketDeflateTest { assertEquals(extension.incomingNoContextTakeover, false) assertEquals(extension.outgoingNoContextTakeover, true) } + + @Test + fun testManualConfig() { + val config = WebSocketDeflateExtension.Config() + config.manualConfig(mutableListOf()) + + config.configureProtocols { + it.add(WebSocketExtensionHeader("permessage-deflate", listOf("client_no_context_takeover"))) + } + + config.manualConfig(mutableListOf()) + } }