From b4927bdd75352cffda0dcca94bb2d51b4cb3fa74 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Latour Date: Mon, 21 Aug 2017 08:37:49 +0200 Subject: [PATCH] Fixed CFURLCopyPath() returning NULL for "//" path Fix #297 --- GCDWebServer/Core/GCDWebServerConnection.m | 3 +++ 1 file changed, 3 insertions(+) diff --git a/GCDWebServer/Core/GCDWebServerConnection.m b/GCDWebServer/Core/GCDWebServerConnection.m index 1781696..cfee31b 100644 --- a/GCDWebServer/Core/GCDWebServerConnection.m +++ b/GCDWebServer/Core/GCDWebServerConnection.m @@ -300,6 +300,9 @@ NS_ASSUME_NONNULL_END GWS_DCHECK(requestURL); } NSString* urlPath = requestURL ? CFBridgingRelease(CFURLCopyPath((CFURLRef)requestURL)) : nil; // Don't use -[NSURL path] which strips the ending slash + if (urlPath == nil) { + urlPath = @"/"; // CFURLCopyPath() returns NULL for a relative URL with path "//" contrary to -[NSURL path] which returns "/" + } NSString* requestPath = urlPath ? GCDWebServerUnescapeURLString(urlPath) : nil; NSString* queryString = requestURL ? CFBridgingRelease(CFURLCopyQueryString((CFURLRef)requestURL, NULL)) : nil; // Don't use -[NSURL query] to make sure query is not unescaped; NSDictionary* requestQuery = queryString ? GCDWebServerParseURLEncodedForm(queryString) : @{};