Modified prepareResponse() to call queueOutboundClientMessage instead of directly setting the currentOutboundMessage.

This commit is contained in:
wcrisman
2014-12-28 21:13:24 -08:00
parent c7188095d0
commit 6cbd188867

View File

@@ -232,19 +232,21 @@ public boolean isSsl() {
private void queueOutboundClientMessage(MessageBuffer messageBuffer) { private void queueOutboundClientMessage(MessageBuffer messageBuffer) {
boolean notify = false; boolean notify = false;
synchronized(this) { if(messageBuffer != null) {
if(currentOutboundMessage == null) { synchronized(getLock()) {
lastOutboundMessage = currentOutboundMessage = messageBuffer; if(currentOutboundMessage == null) {
notify = true; lastOutboundMessage = currentOutboundMessage = messageBuffer;
notify = true;
}//if//
else {
lastOutboundMessage.setNext(messageBuffer);
lastOutboundMessage = messageBuffer;
}//else//
}//synchronized()//
if(notify) {
notifyListenerOfPendingWrite();
}//if// }//if//
else {
lastOutboundMessage.setNext(messageBuffer);
lastOutboundMessage = messageBuffer;
}//else//
}//synchronized()//
if(notify) {
notifyListenerOfPendingWrite();
}//if// }//if//
}//queueOutboundClientMessage()// }//queueOutboundClientMessage()//
private void writeSessionCookies(Response response, PrintStream pout) { private void writeSessionCookies(Response response, PrintStream pout) {
@@ -515,7 +517,8 @@ private void prepareResponse(Response response) {
// }//if// // }//if//
//Save the buffer as the current pending outbound message for this socket context.// //Save the buffer as the current pending outbound message for this socket context.//
currentOutboundMessage = new MessageBuffer(buffer, response, content != null && request.getRequestType() != Request.TYPE_HEAD ? content : null); //currentOutboundMessage = new MessageBuffer(buffer, response, content != null && request.getRequestType() != Request.TYPE_HEAD ? content : null);
queueOutboundClientMessage(new MessageBuffer(buffer, response, content != null && request.getRequestType() != Request.TYPE_HEAD ? content : null));
}//try// }//try//
catch(Throwable e) { catch(Throwable e) {
Debug.log("Fatal Error: Failed to build and send the response message due to an exception.", e); Debug.log("Fatal Error: Failed to build and send the response message due to an exception.", e);