first = false;
bodyMessage.reset();
- readMessage(bodyMessage, false, false);
-
+ if (!readMessage(bodyMessage, false, false)) {
+ // Invalid message
+ return false;
+ }
// No data received.
if (bodyMessage.getLen() == 0) {
// just the header
read(headerLength);
}
inputBuffer.get(message.getBuffer(), 0, headerLength);
- message.processHeader();
- read(message.getLen());
- inputBuffer.get(message.getBuffer(), headerLength, message.getLen());
-
- return true;
+ int messageLength = message.processHeader();
+ if (messageLength < 0) {
+ // Invalid AJP header signature
+ // TODO: Throw some exception and close the connection to frontend.
+ return false;
+ }
+ else if (messageLength == 0) {
+ // Zero length message.
+ return true;
+ }
+ else {
+ read(messageLength);
+ inputBuffer.get(message.getBuffer(), headerLength, messageLength);
+ return true;
+ }
}
first = false;
bodyMessage.reset();
- readMessage(bodyMessage);
-
+ if (!readMessage(bodyMessage)) {
+ // Invalid message
+ return false;
+ }
// No data received.
if (bodyMessage.getLen() == 0) {
// just the header
throws IOException {
byte[] buf = message.getBuffer();
+ int headerLength = message.getHeaderLength();
- read(buf, 0, message.getHeaderLength());
-
- message.processHeader();
- read(buf, message.getHeaderLength(), message.getLen());
-
- return true;
+ read(buf, 0, headerLength);
+ int messageLength = message.processHeader();
+ if (messageLength < 0) {
+ // Invalid AJP header signature
+ // TODO: Throw some exception and close the connection to frontend.
+ return false;
+ }
+ else if (messageLength == 0) {
+ // Zero length message.
+ return true;
+ }
+ else {
+ read(buf, headerLength, messageLength);
+ return true;
+ }
}