From 6cbd1888674f6a9d093f97101e441534517bfc42 Mon Sep 17 00:00:00 2001 From: wcrisman Date: Sun, 28 Dec 2014 21:13:24 -0800 Subject: [PATCH] Modified prepareResponse() to call queueOutboundClientMessage instead of directly setting the currentOutboundMessage. --- .../foundation/web/server/SocketContext.java | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) 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 551cab9..910602e 100644 --- a/Foundation Web Core/src/com/foundation/web/server/SocketContext.java +++ b/Foundation Web Core/src/com/foundation/web/server/SocketContext.java @@ -232,19 +232,21 @@ public boolean isSsl() { private void queueOutboundClientMessage(MessageBuffer messageBuffer) { boolean notify = false; - synchronized(this) { - if(currentOutboundMessage == null) { - lastOutboundMessage = currentOutboundMessage = messageBuffer; - notify = true; + if(messageBuffer != null) { + synchronized(getLock()) { + if(currentOutboundMessage == null) { + lastOutboundMessage = currentOutboundMessage = messageBuffer; + notify = true; + }//if// + else { + lastOutboundMessage.setNext(messageBuffer); + lastOutboundMessage = messageBuffer; + }//else// + }//synchronized()// + + if(notify) { + notifyListenerOfPendingWrite(); }//if// - else { - lastOutboundMessage.setNext(messageBuffer); - lastOutboundMessage = messageBuffer; - }//else// - }//synchronized()// - - if(notify) { - notifyListenerOfPendingWrite(); }//if// }//queueOutboundClientMessage()// private void writeSessionCookies(Response response, PrintStream pout) { @@ -515,7 +517,8 @@ private void prepareResponse(Response response) { // }//if// //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// catch(Throwable e) { Debug.log("Fatal Error: Failed to build and send the response message due to an exception.", e);