From 1d9f21a9b1d95ace54ea1f38e7325287e34bb637 Mon Sep 17 00:00:00 2001 From: Simone Bordet Date: Tue, 25 Jul 2017 12:58:54 +0200 Subject: [PATCH] Fixes #1671 - Asymmetric usage of trailers in MetaData.Request. Reviewed with code cleanups. --- .../java/org/eclipse/jetty/server/HttpChannel.java | 14 ++++---------- .../java/org/eclipse/jetty/server/Request.java | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java index 251082166e8..ba184350f28 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/HttpChannel.java @@ -61,7 +61,6 @@ import org.eclipse.jetty.util.thread.Scheduler; * The HttpChannel signals the switch from passive mode to active mode by returning true to one of the * HttpParser.RequestHandler callbacks. The completion of the active phase is signalled by a call to * HttpTransport.completed(). - * */ public class HttpChannel implements Runnable, HttpOutput.Interceptor { @@ -76,18 +75,11 @@ public class HttpChannel implements Runnable, HttpOutput.Interceptor private final HttpChannelState _state; private final Request _request; private final Response _response; - private final Supplier _trailerSupplier = new Supplier() - { - @Override - public HttpFields get() - { - return _trailers; - } - }; + private HttpFields _trailers; + private final Supplier _trailerSupplier = () -> _trailers; private MetaData.Response _committedMetaData; private RequestLog _requestLog; private long _oldIdleTimeout; - private HttpFields _trailers; /** Bytes written after interception (eg after compression) */ private long _written; @@ -262,6 +254,8 @@ public class HttpChannel implements Runnable, HttpOutput.Interceptor _committedMetaData=null; _requestLog=_connector==null?null:_connector.getServer().getRequestLog(); _written=0; + _trailers=null; + _oldIdleTimeout=0; } public void asyncReadFillInterested() diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java index 0a7f16b7c40..c5d533be171 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Request.java @@ -219,7 +219,7 @@ public class Request implements HttpServletRequest public HttpFields getTrailers() { MetaData.Request metadata=_metaData; - Supplier trailers = metadata==null?null:metadata.getTrailerSupplier(); + Supplier trailers = metadata==null?null:metadata.getTrailerSupplier(); return trailers==null?null:trailers.get(); }