From 35b7a0a62dae0469d41294ffd82a47fa9a4ae907 Mon Sep 17 00:00:00 2001 From: Thomas Becker Date: Wed, 24 Oct 2012 16:37:07 +0200 Subject: [PATCH] block instead of copy --- .../server/http/HttpTransportOverSPDY.java | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/http/HttpTransportOverSPDY.java b/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/http/HttpTransportOverSPDY.java index d60740403a8..eff5ca31590 100644 --- a/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/http/HttpTransportOverSPDY.java +++ b/jetty-spdy/spdy-http-server/src/main/java/org/eclipse/jetty/spdy/server/http/HttpTransportOverSPDY.java @@ -96,12 +96,12 @@ public class HttpTransportOverSPDY implements HttpTransport } } - boolean noContent = BufferUtil.isEmpty(content); - boolean close = noContent && lastContent; + boolean hasContent = !BufferUtil.isEmpty(content); + boolean close = !hasContent && lastContent; reply(stream, new ReplyInfo(headers, close)); - if (!noContent) - stream.data(new ByteBufferDataInfo(content, lastContent)); + if (hasContent) + sendToStream(content, lastContent); } @Override @@ -111,7 +111,20 @@ public class HttpTransportOverSPDY implements HttpTransport // TODO work out if we can avoid double calls for lastContent==true if (stream.isClosed() && BufferUtil.isEmpty(content) && lastContent) return; - stream.data(new ByteBufferDataInfo(content, lastContent)); + + sendToStream(content, lastContent); + } + + private void sendToStream(ByteBuffer content, boolean lastContent) + { + try + { + stream.data(new ByteBufferDataInfo(content, lastContent)).get(); + } + catch (Exception e) + { + endPoint.close(); + } } @Override