Modified build script to use jdk 1.7 instead of 1.5 for building the release compile; Added debug output to try to identify the error where interestOps isn't set properly for a socket that isn't yet closed; Fixed index exception in identifying the host; Fixed odd build errors in the development environment by removing and re-adding referenced projects.

This commit is contained in:
Wynne Crisman
2016-02-22 10:40:27 -08:00
parent 439eca5e9d
commit 040a3b4ddc
4 changed files with 35 additions and 25 deletions

View File

@@ -4,11 +4,11 @@
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry combineaccessrules="false" kind="src" path="/Common"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation Web Interfaces"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation Builder"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation SWT"/>
<classpathentry combineaccessrules="false" kind="src" path="/SWT"/>
<classpathentry combineaccessrules="false" kind="src" path="/Orb"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation Web Server Shared"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation Web Interfaces"/>
<classpathentry kind="output" path="bin"/>
</classpath>

View File

@@ -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()//

View File

@@ -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//

View File

@@ -9,7 +9,7 @@
<classpathentry combineaccessrules="false" kind="src" path="/SWT"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation Web Server Monitor Shared"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation Web Interfaces"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation Web Server Shared"/>
<classpathentry combineaccessrules="false" kind="src" path="/Class File Services"/>
<classpathentry combineaccessrules="false" kind="src" path="/Foundation Web Server Shared"/>
<classpathentry kind="output" path="bin"/>
</classpath>