diff --git a/ktor-server/ktor-server-host-common/jvm/src/io/ktor/server/engine/internal/EngineUtilsJvm.kt b/ktor-server/ktor-server-host-common/jvm/src/io/ktor/server/engine/internal/EngineUtilsJvm.kt new file mode 100644 index 0000000000..acf6e3f206 --- /dev/null +++ b/ktor-server/ktor-server-host-common/jvm/src/io/ktor/server/engine/internal/EngineUtilsJvm.kt @@ -0,0 +1,15 @@ +/* + * 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.engine.internal + +private val OS_NAME = System.getProperty("os.name", "") + .lowercase() + +internal actual fun escapeHostname(value: String): String { + if (!OS_NAME.contains("windows")) return value + if (value != "0.0.0.0") return value + + return "127.0.0.1" +} diff --git a/ktor-server/ktor-server-host-common/jvmAndNix/src/io/ktor/server/engine/BaseApplicationEngine.kt b/ktor-server/ktor-server-host-common/jvmAndNix/src/io/ktor/server/engine/BaseApplicationEngine.kt index 1b4a77fc03..6abddaae7a 100644 --- a/ktor-server/ktor-server-host-common/jvmAndNix/src/io/ktor/server/engine/BaseApplicationEngine.kt +++ b/ktor-server/ktor-server-host-common/jvmAndNix/src/io/ktor/server/engine/BaseApplicationEngine.kt @@ -72,8 +72,9 @@ public abstract class BaseApplicationEngine( val log = environment.log CoroutineScope(environment.application.coroutineContext).launch { connectors.await().forEach { + val host = escapeHostname(it.host) log.info( - "Responding at ${it.type.name.lowercase()}://${it.host}:${it.port}" + "Responding at ${it.type.name.lowercase()}://$host:${it.port}" ) } } diff --git a/ktor-server/ktor-server-host-common/jvmAndNix/src/io/ktor/server/engine/internal/EngineUtils.kt b/ktor-server/ktor-server-host-common/jvmAndNix/src/io/ktor/server/engine/internal/EngineUtils.kt new file mode 100644 index 0000000000..6f4e9c9c19 --- /dev/null +++ b/ktor-server/ktor-server-host-common/jvmAndNix/src/io/ktor/server/engine/internal/EngineUtils.kt @@ -0,0 +1,7 @@ +/* + * 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.engine.internal + +internal expect fun escapeHostname(value: String): String diff --git a/ktor-server/ktor-server-host-common/nix/src/io/ktor/server/engine/internal/EngineUtilsNix.kt b/ktor-server/ktor-server-host-common/nix/src/io/ktor/server/engine/internal/EngineUtilsNix.kt new file mode 100644 index 0000000000..0e3db37889 --- /dev/null +++ b/ktor-server/ktor-server-host-common/nix/src/io/ktor/server/engine/internal/EngineUtilsNix.kt @@ -0,0 +1,7 @@ +/* + * 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.engine.internal + +internal actual fun escapeHostname(value: String): String = value