From e35ee79a0e42cda9f0d6a5035f3f54ffbdd4f1df Mon Sep 17 00:00:00 2001 From: tursom Date: Sat, 14 Dec 2019 17:26:49 +0800 Subject: [PATCH] =?UTF-8?q?AsyncRoutedHttpHandler=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9=E5=8D=8F=E7=A8=8B=E7=9A=84=E6=94=AF=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/kotlin/cn/tursom/web/router/RoutedHttpHandler.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/web/src/main/kotlin/cn/tursom/web/router/RoutedHttpHandler.kt b/web/src/main/kotlin/cn/tursom/web/router/RoutedHttpHandler.kt index a024b87..62e88c2 100644 --- a/web/src/main/kotlin/cn/tursom/web/router/RoutedHttpHandler.kt +++ b/web/src/main/kotlin/cn/tursom/web/router/RoutedHttpHandler.kt @@ -1,6 +1,7 @@ package cn.tursom.web.router import cn.tursom.core.buffer.ByteBuffer +import cn.tursom.core.regex.regex import cn.tursom.json.JsonWorkerImpl import cn.tursom.web.ExceptionContent import cn.tursom.web.HttpContent @@ -250,10 +251,12 @@ open class RoutedHttpHandler( return result } + val slashRegex = regex { (-"/").onceMore } + fun safeRoute(route: String) = ( if (route.startsWith('/')) route else "/$route").let { if (it.endsWith('/')) it.dropLast(1) else it - }.repeatUntil({ it.contains("//") }) { it.replace("//", "/") } + }.repeatUntil({ it.contains("//") }) { it.replace(slashRegex, "/") } fun autoReturn(result: Any, content: HttpContent) { log?.debug("{}: autoReturn: {}", content.clientIp, result)