Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimone Bordet2015-12-21 12:02:04 +0000
committerSimone Bordet2015-12-21 12:02:04 +0000
commit3fb354f884e3a9c06ad9fe63f4201c08891e5089 (patch)
treee845103e10adf89a0138419a6f879a9a34b14746 /jetty-fcgi
parent24b9d39c0f54bc064dad7dac7b82d5e1297fcc51 (diff)
parent8f4cc73613e5f6953789eb32eb7aba8e26083854 (diff)
downloadorg.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')
-rw-r--r--jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpChannelOverFCGI.java22
-rw-r--r--jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpConnectionOverFCGI.java47
-rw-r--r--jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/HttpDestinationOverFCGI.java5
-rw-r--r--jetty-fcgi/fcgi-client/src/main/java/org/eclipse/jetty/fcgi/client/http/MultiplexHttpDestinationOverFCGI.java5
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);
}
}

Back to the top