if we in the DefaultWebServerPathHandler, it means that we should or handle request...
authorVladimir Krivosheev <vladimir.krivosheev@jetbrains.com>
Fri, 29 Apr 2016 09:30:59 +0000 (11:30 +0200)
committerVladimir Krivosheev <vladimir.krivosheev@jetbrains.com>
Fri, 29 Apr 2016 09:30:59 +0000 (11:30 +0200)
platform/built-in-server/src/org/jetbrains/builtInWebServer/DefaultWebServerPathHandler.kt

index 7f8c575a1a9bacdd02fc31b57ae58d12d01f38ba..2b2a53cdfb0aa2c36ed95f26df83b281ed3e7470 100644 (file)
@@ -41,22 +41,18 @@ private class DefaultWebServerPathHandler : WebServerPathHandler() {
                        projectName: String,
                        decodedRawPath: String,
                        isCustomHost: Boolean): Boolean {
+    val channel = context.channel()
+
     val isSignedRequest = request.isSignedRequest()
-    val extraHttpHeaders = validateToken(request, context.channel(), isSignedRequest) ?: return true
+    val extraHttpHeaders = validateToken(request, channel, isSignedRequest) ?: return true
 
-    val channel = context.channel()
     val pathToFileManager = WebServerPathToFileManager.getInstance(project)
     var pathInfo = pathToFileManager.pathToInfoCache.getIfPresent(path)
     if (pathInfo == null || !pathInfo.isValid) {
       pathInfo = pathToFileManager.doFindByRelativePath(path)
       if (pathInfo == null) {
-        if (path.isEmpty()) {
-          HttpResponseStatus.NOT_FOUND.send(channel, request, "Index file doesn't exist.", extraHttpHeaders)
-          return true
-        }
-        else {
-          return false
-        }
+        HttpResponseStatus.NOT_FOUND.send(channel, request, if (path.isEmpty()) "Index file doesn't exist." else null, extraHttpHeaders)
+        return true
       }
 
       pathToFileManager.pathToInfoCache.put(path, pathInfo)
@@ -91,7 +87,7 @@ private class DefaultWebServerPathHandler : WebServerPathHandler() {
 
     // if extraHttpHeaders is not empty, it means that we get request wih token in the query
     if (!isSignedRequest && request.origin == null && request.referrer == null && request.isRegularBrowser() && !canBeAccessedDirectly(pathInfo.name)) {
-      HttpResponseStatus.NOT_FOUND.send(context.channel(), request)
+      HttpResponseStatus.NOT_FOUND.send(channel, request)
       return true
     }
 
@@ -121,7 +117,10 @@ private class DefaultWebServerPathHandler : WebServerPathHandler() {
         }
       }
     }
-    return false
+
+    // we registered as a last handler, so, we should just return 404 and send extra headers
+    HttpResponseStatus.NOT_FOUND.send(channel, request, extraHeaders = extraHttpHeaders)
+    return true
   }
 }