i hate tcp warmups
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package org.lumijiez.core.http;
|
package org.lumijiez.core.http;
|
||||||
|
|
||||||
|
import org.lumijiez.logging.Logger;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@@ -13,15 +15,28 @@ public class HttpRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void parseRequest(BufferedReader in) throws IOException {
|
private void parseRequest(BufferedReader in) throws IOException {
|
||||||
String requestLine = in.readLine();
|
String requestLine;
|
||||||
if (requestLine != null) {
|
|
||||||
String[] tokens = requestLine.split(" ");
|
while ((requestLine = in.readLine()) != null) {
|
||||||
if (tokens.length >= 3) {
|
|
||||||
this.method = tokens[0];
|
if (!requestLine.trim().isEmpty()) {
|
||||||
this.path = tokens[1];
|
String[] tokens = requestLine.split(" ");
|
||||||
this.httpVersion = tokens[2];
|
if (tokens.length == 3) {
|
||||||
|
this.method = tokens[0];
|
||||||
|
this.path = tokens[1];
|
||||||
|
this.httpVersion = tokens[2];
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
Logger.error("HTTP", "Invalid line format: " + requestLine);
|
||||||
|
throw new IOException("Invalid request line format.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// String headerLine;
|
||||||
|
// while ((headerLine = in.readLine()) != null && !headerLine.trim().isEmpty()) {
|
||||||
|
// Logger.info("HTTP-DEBUG", "Header: " + headerLine);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMethod() {
|
public String getMethod() {
|
||||||
|
|||||||
@@ -62,16 +62,37 @@ public class HttpServer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected void handleClient(Socket clientSocket) {
|
protected void handleClient(Socket clientSocket) {
|
||||||
try (BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
try {
|
||||||
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true)) {
|
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
|
||||||
|
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
|
||||||
|
|
||||||
|
in.mark(32000);
|
||||||
|
if (!in.ready()) {
|
||||||
|
clientSocket.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String firstLine = in.readLine();
|
||||||
|
if (firstLine == null || firstLine.trim().isEmpty()) {
|
||||||
|
clientSocket.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
in.reset();
|
||||||
|
|
||||||
HttpRequest request = new HttpRequest(in);
|
HttpRequest request = new HttpRequest(in);
|
||||||
HttpResponse response = new HttpResponse(out);
|
HttpResponse response = new HttpResponse(out);
|
||||||
|
|
||||||
Logger.info("HTTP", "Incoming: " + request.getMethod() + " " + request.getPath());
|
if (request.getMethod() != null && request.getPath() != null) {
|
||||||
router.handleRequest(request, response);
|
Logger.info("HTTP", "Incoming: " + request.getMethod() + " " + request.getPath());
|
||||||
|
router.handleRequest(request, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
clientSocket.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
Logger.error("HTTP", "Error handling client: " + e.getMessage());
|
Logger.error("HTTP", "Error handling client: " + e.getMessage());
|
||||||
|
try {
|
||||||
|
clientSocket.close();
|
||||||
|
} catch (IOException ignored) {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user