in ktor-server/ktor-server-core/jvm/src/io/ktor/routing/HostsRoutingBuilder.kt [101:124]
override fun evaluate(context: RoutingResolveContext, segmentIndex: Int): RouteSelectorEvaluation {
val requestHost = context.call.request.origin.host
val requestPort = context.call.request.origin.port
if (hostList.isNotEmpty() || hostPatterns.isNotEmpty()) {
val matches1 = requestHost in hostList
val matches2 = if (!matches1) hostPatterns.any { it.matches(requestHost) } else false
if (!matches1 && !matches2) {
return RouteSelectorEvaluation.Failed
}
}
if (portsList.isNotEmpty()) {
if (requestPort !in portsList) return RouteSelectorEvaluation.Failed
}
val params = Parameters.build {
append(HostNameParameter, requestHost)
append(PortParameter, requestPort.toString())
}
return RouteSelectorEvaluation(true, RouteSelectorEvaluation.qualityConstant, params)
}