From fc5dd874f3deda71e6cd42af994a5af5cb6be4af Mon Sep 17 00:00:00 2001 From: Joakim Erdfelt Date: Fri, 17 Aug 2018 16:57:28 -0500 Subject: [PATCH] Issue #2824 - Request.getParameters() should not reparse or recreate _parameters Map Signed-off-by: Joakim Erdfelt --- .../src/main/java/org/eclipse/jetty/server/Request.java | 4 ++-- .../test/java/org/eclipse/jetty/server/RequestTest.java | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) 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 6a8fb1aaea2..34042d73f28 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 @@ -370,7 +370,7 @@ public class Request implements HttpServletRequest /* ------------------------------------------------------------ */ private MultiMap getParameters() { - if (!_contentParamsExtracted) + if (!_contentParamsExtracted) { // content parameters need boolean protection as they can only be read // once, but may be reset to null by a reset @@ -411,7 +411,7 @@ public class Request implements HttpServletRequest _parameters=_contentParameters; else if (isNoParams(_contentParameters) || _contentParameters.size()==0) _parameters=_queryParameters; - else + else if(_parameters == null) { _parameters = new MultiMap<>(); _parameters.addAllValues(_queryParameters); diff --git a/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java b/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java index 1699df190b7..cb2d4c327bf 100644 --- a/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java +++ b/jetty-server/src/test/java/org/eclipse/jetty/server/RequestTest.java @@ -20,6 +20,7 @@ package org.eclipse.jetty.server; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; +import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.startsWith; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; @@ -1060,7 +1061,7 @@ public class RequestTest String response = _connector.getResponse(request); assertThat(response, containsString(" 200 OK")); } - + @Test public void testPartialRead() throws Exception { @@ -1252,7 +1253,7 @@ public class RequestTest 200, TimeUnit.MILLISECONDS ); assertThat(response, containsString("200")); - assertThat(response, Matchers.not(containsString("Connection: close"))); + assertThat(response, not(containsString("Connection: close"))); assertThat(response, containsString("Hello World")); response=_connector.getResponse( @@ -1282,7 +1283,7 @@ public class RequestTest "\n" ); assertThat(response, containsString("200")); - assertThat(response, Matchers.not(containsString("Connection: close"))); + assertThat(response, not(containsString("Connection: close"))); assertThat(response, containsString("Hello World")); response=_connector.getResponse(