diff options
author | Simone Bordet | 2015-12-21 12:02:04 +0000 |
---|---|---|
committer | Simone Bordet | 2015-12-21 12:02:04 +0000 |
commit | 3fb354f884e3a9c06ad9fe63f4201c08891e5089 (patch) | |
tree | e845103e10adf89a0138419a6f879a9a34b14746 /jetty-fcgi | |
parent | 24b9d39c0f54bc064dad7dac7b82d5e1297fcc51 (diff) | |
parent | 8f4cc73613e5f6953789eb32eb7aba8e26083854 (diff) | |
download | org.eclipse.jetty.project-3fb354f884e3a9c06ad9fe63f4201c08891e5089.tar.gz org.eclipse.jetty.project-3fb354f884e3a9c06ad9fe63f4201c08891e5089.tar.xz org.eclipse.jetty.project-3fb354f884e3a9c06ad9fe63f4201c08891e5089.zip |
Merged branch 'jetty-9.3.x' into 'master'.
Diffstat (limited to 'jetty-fcgi')
4 files changed, 62 insertions, 17 deletions
diff --git a/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpChannelOverFCGI.java b/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpChannelOverFCGI.java index fb47ec7ef4..3704ce80b3 100644 --- a/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpChannelOverFCGI.java +++ b/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpChannelOverFCGI.java @@ -79,6 +79,7 @@ public class HttpChannelOverFCGI extends HttpChannel if (exchange != null) { version = exchange.getRequest().getVersion(); + idle.onOpen(); sender.send(exchange); } } @@ -91,6 +92,7 @@ public class HttpChannelOverFCGI extends HttpChannel protected boolean responseBegin(int code, String reason) { + idle.notIdle(); HttpExchange exchange = getHttpExchange(); if (exchange == null) return false; @@ -106,12 +108,14 @@ public class HttpChannelOverFCGI extends HttpChannel protected boolean responseHeaders() { + idle.notIdle(); HttpExchange exchange = getHttpExchange(); return exchange != null && receiver.responseHeaders(exchange); } protected boolean content(ByteBuffer buffer, Callback callback) { + idle.notIdle(); HttpExchange exchange = getHttpExchange(); if (exchange != null) return receiver.responseContent(exchange, buffer, callback); @@ -151,6 +155,7 @@ public class HttpChannelOverFCGI extends HttpChannel private class FCGIIdleTimeout extends IdleTimeout { private final HttpConnectionOverFCGI connection; + private boolean open; public FCGIIdleTimeout(HttpConnectionOverFCGI connection, long idleTimeout) { @@ -160,6 +165,21 @@ public class HttpChannelOverFCGI extends HttpChannel } @Override + public void onOpen() + { + open = true; + notIdle(); + super.onOpen(); + } + + @Override + public void onClose() + { + super.onClose(); + open = false; + } + + @Override protected void onIdleExpired(TimeoutException timeout) { if (LOG.isDebugEnabled()) @@ -170,7 +190,7 @@ public class HttpChannelOverFCGI extends HttpChannel @Override public boolean isOpen() { - return connection.getEndPoint().isOpen(); + return open; } } } diff --git a/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpConnectionOverFCGI.java b/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpConnectionOverFCGI.java index 0d71cfd3ed..d3c588150c 100644 --- a/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpConnectionOverFCGI.java +++ b/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpConnectionOverFCGI.java @@ -31,6 +31,7 @@ import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.HttpConnection; import org.eclipse.jetty.client.HttpDestination; import org.eclipse.jetty.client.HttpExchange; +import org.eclipse.jetty.client.SendFailure; import org.eclipse.jetty.client.api.Connection; import org.eclipse.jetty.client.api.Request; import org.eclipse.jetty.client.api.Response; @@ -82,15 +83,20 @@ public class HttpConnectionOverFCGI extends AbstractConnection implements Connec return destination; } + protected Flusher getFlusher() + { + return flusher; + } + @Override public void send(Request request, Response.CompleteListener listener) { delegate.send(request, listener); } - protected void send(HttpExchange exchange) + protected SendFailure send(HttpExchange exchange) { - delegate.send(exchange); + return delegate.send(exchange); } @Override @@ -185,9 +191,13 @@ public class HttpConnectionOverFCGI extends AbstractConnection implements Connec } @Override - protected boolean onReadTimeout() + public boolean onIdleExpired() { - close(new TimeoutException()); + boolean close = delegate.onIdleTimeout(); + if (multiplexed) + close &= isFillInterested(); + if (close) + close(new TimeoutException("Idle timeout " + getEndPoint().getIdleTimeout() + "ms")); return false; } @@ -197,6 +207,11 @@ public class HttpConnectionOverFCGI extends AbstractConnection implements Connec destination.release(this); } + public boolean isClosed() + { + return closed.get(); + } + @Override public void close() { @@ -212,10 +227,10 @@ public class HttpConnectionOverFCGI extends AbstractConnection implements Connec getHttpDestination().close(this); getEndPoint().shutdownOutput(); if (LOG.isDebugEnabled()) - LOG.debug("{} oshut", this); + LOG.debug("Shutdown {}", this); getEndPoint().close(); if (LOG.isDebugEnabled()) - LOG.debug("{} closed", this); + LOG.debug("Closed {}", this); abort(failure); } @@ -270,6 +285,11 @@ public class HttpConnectionOverFCGI extends AbstractConnection implements Connec } } + protected HttpChannelOverFCGI newHttpChannel(int id, Request request) + { + return new HttpChannelOverFCGI(this, getFlusher(), id, request.getIdleTimeout()); + } + @Override public String toString() { @@ -288,19 +308,17 @@ public class HttpConnectionOverFCGI extends AbstractConnection implements Connec } @Override - protected void send(HttpExchange exchange) + protected SendFailure send(HttpExchange exchange) { Request request = exchange.getRequest(); normalizeRequest(request); // FCGI may be multiplexed, so create one channel for each request. int id = acquireRequest(); - HttpChannelOverFCGI channel = new HttpChannelOverFCGI(HttpConnectionOverFCGI.this, flusher, id, request.getIdleTimeout()); + HttpChannelOverFCGI channel = newHttpChannel(id, request); channels.put(id, channel); - if (channel.associate(exchange)) - channel.send(); - else - channel.release(); + + return send(channel, exchange); } @Override @@ -309,6 +327,11 @@ public class HttpConnectionOverFCGI extends AbstractConnection implements Connec HttpConnectionOverFCGI.this.close(); } + protected void close(Throwable failure) + { + HttpConnectionOverFCGI.this.close(failure); + } + @Override public String toString() { diff --git a/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpDestinationOverFCGI.java b/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpDestinationOverFCGI.java index 2f3447d384..3ce6db818f 100644 --- a/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpDestinationOverFCGI.java +++ b/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpDestinationOverFCGI.java @@ -22,6 +22,7 @@ import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.HttpExchange; import org.eclipse.jetty.client.Origin; import org.eclipse.jetty.client.PoolingHttpDestination; +import org.eclipse.jetty.client.SendFailure; import org.eclipse.jetty.client.api.Connection; public class HttpDestinationOverFCGI extends PoolingHttpDestination @@ -32,8 +33,8 @@ public class HttpDestinationOverFCGI extends PoolingHttpDestination } @Override - protected void send(Connection connection, HttpExchange exchange) + protected SendFailure send(Connection connection, HttpExchange exchange) { - ((HttpConnectionOverFCGI)connection).send(exchange); + return ((HttpConnectionOverFCGI)connection).send(exchange); } } diff --git a/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/MultiplexHttpDestinationOverFCGI.java b/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/MultiplexHttpDestinationOverFCGI.java index 80bb63cc47..70c35b0043 100644 --- a/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/MultiplexHttpDestinationOverFCGI.java +++ b/jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/MultiplexHttpDestinationOverFCGI.java @@ -22,6 +22,7 @@ import org.eclipse.jetty.client.HttpClient; import org.eclipse.jetty.client.HttpExchange; import org.eclipse.jetty.client.MultiplexHttpDestination; import org.eclipse.jetty.client.Origin; +import org.eclipse.jetty.client.SendFailure; import org.eclipse.jetty.client.api.Connection; public class MultiplexHttpDestinationOverFCGI extends MultiplexHttpDestination @@ -32,8 +33,8 @@ public class MultiplexHttpDestinationOverFCGI extends MultiplexHttpDestination } @Override - protected void send(Connection connection, HttpExchange exchange) + protected SendFailure send(Connection connection, HttpExchange exchange) { - ((HttpConnectionOverFCGI)connection).send(exchange); + return ((HttpConnectionOverFCGI)connection).send(exchange); } } |