From 6c09952065cc60b7931bd42b14c17480b8f5bd46 Mon Sep 17 00:00:00 2001 From: Andy Green Date: Fri, 21 Jul 2017 20:04:02 +0800 Subject: [PATCH] url cleaning: leave // after http[s]: alone --- lib/server.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/server.c b/lib/server.c index 108321d..f588b4e 100644 --- a/lib/server.c +++ b/lib/server.c @@ -689,6 +689,17 @@ lws_unauthorised_basic_auth(struct lws *wsi) int lws_clean_url(char *p) { + if (p[0] == 'h' && p[1] == 't' && p[2] == 't' && p[3] == 'p') { + p += 4; + if (*p == 's') + p++; + if (*p == ':') { + p++; + if (*p == '/') + p++; + } + } + while (*p) { if (p[0] == '/' && p[1] == '/') { char *p1 = p; @@ -997,7 +1008,10 @@ lws_http_action(struct lws *wsi) "%s%s%s/", oprot[!!lws_is_ssl(wsi)], lws_hdr_simple_ptr(wsi, WSI_TOKEN_HOST), uri_ptr); + + lwsl_notice("%s\n", end); lws_clean_url((char *)end); + lwsl_notice("%s\n", end); n = lws_http_redirect(wsi, HTTP_STATUS_MOVED_PERMANENTLY, end, n, &p, end); -- 2.7.4