diff --git a/Foundation Web Core/.classpath b/Foundation Web Core/.classpath index a7166bb..e3d6436 100644 --- a/Foundation Web Core/.classpath +++ b/Foundation Web Core/.classpath @@ -4,11 +4,11 @@ - + diff --git a/Foundation Web Core/src/com/foundation/web/server/NetworkListener.java b/Foundation Web Core/src/com/foundation/web/server/NetworkListener.java index bebf097..3e3d3d4 100644 --- a/Foundation Web Core/src/com/foundation/web/server/NetworkListener.java +++ b/Foundation Web Core/src/com/foundation/web/server/NetworkListener.java @@ -238,7 +238,7 @@ public void run() { }//else if// else { //This shouldn't be called I don't think.// - Debug.log(new RuntimeException("Woops! Somehow we aren't closed and we didn't setup the interestOps for the HTTP socket!")); + Debug.log(new RuntimeException("Woops! Somehow we aren't closed and we didn't setup the interestOps for the HTTP socket! {" + context.toString() + "}")); }//else// }//finally// }//run()// diff --git a/Foundation Web Core/src/com/foundation/web/server/SocketContext.java b/Foundation Web Core/src/com/foundation/web/server/SocketContext.java index dd846a5..b7f6b7f 100644 --- a/Foundation Web Core/src/com/foundation/web/server/SocketContext.java +++ b/Foundation Web Core/src/com/foundation/web/server/SocketContext.java @@ -1259,32 +1259,36 @@ private boolean processRequestedHost(ByteBuffer fragment) throws IOException { totalHeaderSize++; }//while// - //If we have the minimum number of bytes and the last bytes are a line end, then check the line for "Host: xxxxxxx\r\n" - String line = buffer.toString().substring(0, buffer.length() - 2).trim(); - if(line.startsWith("Host: ")) { - int colonIndex; + //If we have a full line... + if(buffer.length() > 1 && (buffer.charAt(buffer.length() - 2) == '\r') && (buffer.charAt(buffer.length() - 1) == '\n')) { + //If we have the minimum number of bytes and the last bytes are a line end, then check the line for "Host: xxxxxxx\r\n" + String line = buffer.toString().substring(0, buffer.length() - 2).trim(); - host = line.substring(6).trim(); - colonIndex = host.indexOf(':'); + if(line.startsWith("Host: ")) { + int colonIndex; + + host = line.substring(6).trim(); + colonIndex = host.indexOf(':'); + + if(colonIndex > 0) { + host = host.substring(0, colonIndex); + }//if// + }//if// - if(colonIndex > 0) { - host = host.substring(0, colonIndex); + if(host == null) { + if(buffer.length() == 2) { + //End of the header reached. No host provided. Kill the connection?// + //Force the connection to the client to be closed.// + close(); + //Throw an exception that should not be logged. This happens occationally when an attacker tries to exploit any header reading weaknesses (all major browsers send a host header).// + throw new IgnoredIOException(null); + }//if// + else { + //Clear the line.// + buffer.setLength(0); + }//else// }//if// }//if// - - if(host == null) { - if(buffer.length() == 2) { - //End of the header reached. No host provided. Kill the connection?// - //Force the connection to the client to be closed.// - close(); - //Throw an exception that should not be logged. This happens occationally when an attacker tries to exploit any header reading weaknesses (all major browsers send a host header).// - throw new IgnoredIOException(null); - }//if// - else { - //Clear the line.// - buffer.setLength(0); - }//else// - }//if// }//while// //If we found the complete first line of the header before running out of bytes, then identify the application.// @@ -2237,4 +2241,10 @@ private int indexOf(byte[] source, byte[] pattern, int fromOffset) { return result; }//indexOf()// +/* (non-Javadoc) + * @see java.lang.Object#toString() + */ +public String toString() { + return "Domain: " + domain + "; SSL: " + (sslEngine != null) + "; Websocket: " + isWebsocket; +}//toString()// }//SocketContext// \ No newline at end of file diff --git a/Foundation Web Server Manager/.classpath b/Foundation Web Server Manager/.classpath index 6947322..e40aa63 100644 --- a/Foundation Web Server Manager/.classpath +++ b/Foundation Web Server Manager/.classpath @@ -9,7 +9,7 @@ - +