diff --git a/ktor-client/ktor-client-curl/desktop/src/io/ktor/client/engine/curl/CurlProcessor.kt b/ktor-client/ktor-client-curl/desktop/src/io/ktor/client/engine/curl/CurlProcessor.kt index e72ea57faf..0b0fede325 100644 --- a/ktor-client/ktor-client-curl/desktop/src/io/ktor/client/engine/curl/CurlProcessor.kt +++ b/ktor-client/ktor-client-curl/desktop/src/io/ktor/client/engine/curl/CurlProcessor.kt @@ -43,9 +43,8 @@ internal class CurlProcessor(coroutineContext: CoroutineContext) { } suspend fun executeRequest(request: CurlRequestData): CurlSuccess { - if (request.isUpgradeRequest && !curlProtocols.contains("ws")) { - @Suppress("DEPRECATION") - throw CurlRuntimeException("WebSockets are supported in experimental libcurl 7.86 and greater") + if (request.isUpgradeRequest && !curlProtocols.contains(request.protocol)) { + error("WebSockets are supported in experimental libcurl 7.86 and greater") } val result = CompletableDeferred() diff --git a/ktor-client/ktor-client-curl/desktop/src/io/ktor/client/engine/curl/internal/CurlRaw.kt b/ktor-client/ktor-client-curl/desktop/src/io/ktor/client/engine/curl/internal/CurlRaw.kt index 4f0e123343..800d62e9a4 100644 --- a/ktor-client/ktor-client-curl/desktop/src/io/ktor/client/engine/curl/internal/CurlRaw.kt +++ b/ktor-client/ktor-client-curl/desktop/src/io/ktor/client/engine/curl/internal/CurlRaw.kt @@ -20,6 +20,7 @@ import kotlin.coroutines.* @OptIn(ExperimentalForeignApi::class, InternalAPI::class) internal suspend fun HttpRequestData.toCurlRequest(config: CurlClientEngineConfig): CurlRequestData = CurlRequestData( + protocol = url.protocol.name, url = url.toString(), method = method.value, headers = headersToCurl(), @@ -36,6 +37,7 @@ internal suspend fun HttpRequestData.toCurlRequest(config: CurlClientEngineConfi ) internal class CurlRequestData @OptIn(ExperimentalForeignApi::class) constructor( + val protocol: String, val url: String, val method: String, val headers: CPointer,