diff --git a/ktor-network/jvm/src/io/ktor/network/sockets/JavaSocketAddressUtils.kt b/ktor-network/jvm/src/io/ktor/network/sockets/JavaSocketAddressUtils.kt index 2612404c3a..82d30201d0 100644 --- a/ktor-network/jvm/src/io/ktor/network/sockets/JavaSocketAddressUtils.kt +++ b/ktor-network/jvm/src/io/ktor/network/sockets/JavaSocketAddressUtils.kt @@ -5,6 +5,7 @@ package io.ktor.network.sockets public fun SocketAddress.toJavaAddress(): java.net.SocketAddress { + // Do not read the hostname here because that may trigger a name service reverse lookup. return address } diff --git a/ktor-server/ktor-server-cio/jvm/src/io/ktor/server/cio/backend/SocketAddressUtilsJvm.kt b/ktor-server/ktor-server-cio/jvm/src/io/ktor/server/cio/backend/SocketAddressUtilsJvm.kt new file mode 100644 index 0000000000..72c3f6a661 --- /dev/null +++ b/ktor-server/ktor-server-cio/jvm/src/io/ktor/server/cio/backend/SocketAddressUtilsJvm.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2014-2022 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +package io.ktor.server.cio.backend + +import io.ktor.network.sockets.* +import io.ktor.util.network.* + +internal actual fun SocketAddress.toNetworkAddress(): NetworkAddress { + // Do not read the hostname here because that may trigger a name service reverse lookup. + return toJavaAddress() as? java.net.InetSocketAddress ?: error("Expected inet socket address") +} diff --git a/ktor-server/ktor-server-cio/jvmAndNix/src/io/ktor/server/cio/backend/SocketAddressUtils.kt b/ktor-server/ktor-server-cio/jvmAndNix/src/io/ktor/server/cio/backend/SocketAddressUtils.kt index 1bb2a16e9a..823c289d33 100644 --- a/ktor-server/ktor-server-cio/jvmAndNix/src/io/ktor/server/cio/backend/SocketAddressUtils.kt +++ b/ktor-server/ktor-server-cio/jvmAndNix/src/io/ktor/server/cio/backend/SocketAddressUtils.kt @@ -13,7 +13,4 @@ internal val SocketAddress.port: Int return inetAddress.port } -internal fun SocketAddress.toNetworkAddress(): NetworkAddress { - val inetAddress = this as? InetSocketAddress ?: error("Expected inet socket address") - return NetworkAddress(inetAddress.hostname, inetAddress.port) -} +internal expect fun SocketAddress.toNetworkAddress(): NetworkAddress diff --git a/ktor-server/ktor-server-cio/nix/src/io/ktor/server/cio/backend/SocketAddressUtilsNative.kt b/ktor-server/ktor-server-cio/nix/src/io/ktor/server/cio/backend/SocketAddressUtilsNative.kt new file mode 100644 index 0000000000..460a9d176e --- /dev/null +++ b/ktor-server/ktor-server-cio/nix/src/io/ktor/server/cio/backend/SocketAddressUtilsNative.kt @@ -0,0 +1,13 @@ +/* + * Copyright 2014-2022 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +package io.ktor.server.cio.backend + +import io.ktor.network.sockets.* +import io.ktor.util.network.* + +internal actual fun SocketAddress.toNetworkAddress(): NetworkAddress { + val inetAddress = this as? InetSocketAddress ?: error("Expected inet socket address") + return NetworkAddress(inetAddress.hostname, inetAddress.port) +}