diff options
author | Jarno Elonen <elonen@iki.fi> | 2015-05-17 02:04:14 +0300 |
---|---|---|
committer | Jarno Elonen <elonen@iki.fi> | 2015-05-17 02:04:14 +0300 |
commit | 256ad3a8699036e58aa0b2e9720dbc1e03b3fcca (patch) | |
tree | 3b0333d4f980c537315a0ff0854f991c0b25426b | |
parent | af7a20b9d426d7b5e21eeacc855bf0a7386adb74 (diff) | |
parent | de2bb1bc9fa3959846741e1fd14076971e17b90c (diff) | |
download | nanohttpd-256ad3a8699036e58aa0b2e9720dbc1e03b3fcca.tar.gz |
Rebase faster-boundary-find
3 files changed, 10 insertions, 5 deletions
diff --git a/core/src/main/java/fi/iki/elonen/NanoHTTPD.java b/core/src/main/java/fi/iki/elonen/NanoHTTPD.java index d961e51..b35dc15 100644 --- a/core/src/main/java/fi/iki/elonen/NanoHTTPD.java +++ b/core/src/main/java/fi/iki/elonen/NanoHTTPD.java @@ -533,7 +533,11 @@ public abstract class NanoHTTPD { // followed by HTTP headers. Ignore version but parse headers. // NOTE: this now forces header names lower case since they are // case insensitive and vary by client. - if (!st.hasMoreTokens()) { + if (st.hasMoreTokens()) { + if (!st.nextToken().equals("HTTP/1.1")) { + throw new ResponseException(Response.Status.UNSUPPORTED_HTTP_VERSION, "Only HTTP/1.1 is supported."); + } + } else { NanoHTTPD.LOG.log(Level.FINE, "no protocol version specified, strange.."); } String line = in.readLine(); @@ -1081,7 +1085,8 @@ public abstract class NanoHTTPD { NOT_FOUND(404, "Not Found"), METHOD_NOT_ALLOWED(405, "Method Not Allowed"), RANGE_NOT_SATISFIABLE(416, "Requested Range Not Satisfiable"), - INTERNAL_ERROR(500, "Internal Server Error"); + INTERNAL_ERROR(500, "Internal Server Error"), + UNSUPPORTED_HTTP_VERSION(505, "HTTP Version Not Supported"); private final int requestStatus; diff --git a/core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java b/core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java index b3113fd..5d06ae4 100644 --- a/core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java +++ b/core/src/test/java/fi/iki/elonen/HttpChunkedResponseTest.java @@ -89,7 +89,7 @@ public class HttpChunkedResponseTest extends HttpServerTest { }.newChunkedResponse(OK, "what/ever", pipedInputStream); this.testServer.response.setChunkedTransfer(true); - ByteArrayOutputStream byteArrayOutputStream = invokeServer("GET / HTTP/1.0"); + ByteArrayOutputStream byteArrayOutputStream = invokeServer("GET / HTTP/1.1"); assertResponse(byteArrayOutputStream, expected); } diff --git a/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java b/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java index 7f5449c..8cae9a3 100644 --- a/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java +++ b/webserver/src/main/java/fi/iki/elonen/SimpleWebServer.java @@ -279,7 +279,7 @@ public class SimpleWebServer extends NanoHTTPD { private String findIndexFileInDirectory(File directory) { for (String fileName : SimpleWebServer.INDEX_FILE_NAMES) { File indexFile = new File(directory, fileName); - if (indexFile.exists()) { + if (indexFile.isFile()) { return fileName; } } @@ -398,7 +398,7 @@ public class SimpleWebServer extends NanoHTTPD { } // Prohibit getting out of current directory - if (uri.startsWith("src/main") || uri.endsWith("src/main") || uri.contains("../")) { + if (uri.contains("../")) { return getForbiddenResponse("Won't serve ../ for security reasons."); } |