diff --git a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java index 74d5f2471d13..4237f8d64c3e 100644 --- a/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java +++ b/jetty-http/src/main/java/org/eclipse/jetty/http/HttpURI.java @@ -821,16 +821,20 @@ public void setPath(String path) parse(State.PATH, path, 0, path.length()); } - public void setPathQuery(String path) + public void setPathQuery(String pathQuery) { _uri = null; _path = null; _decodedPath = null; _param = null; _fragment = null; - _query = null; - if (path != null) - parse(State.PATH, path, 0, path.length()); + /* TODO + * The query is not cleared here, so old values may be retained if there is no query in + * the pathQuery. This is probably a bug, but other code now expects this behaviour, so + * we will keep it in 9 and fix in 10. + */ + if (pathQuery != null) + parse(State.PATH, pathQuery, 0, pathQuery.length()); } public void setQuery(String query) diff --git a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewritePatternRule.java b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewritePatternRule.java index b177d0410e29..59f3f3a97b32 100644 --- a/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewritePatternRule.java +++ b/jetty-rewrite/src/main/java/org/eclipse/jetty/rewrite/handler/RewritePatternRule.java @@ -90,15 +90,13 @@ public String apply(String target, HttpServletRequest request, HttpServletRespon @Override public void applyURI(Request request, String oldURI, String newURI) throws IOException { - String queryString = request.getQueryString(); if (_query == null) { request.setURIPathQuery(newURI); - if (queryString != null) - request.setQueryString(queryString); } else { + String queryString = request.getQueryString(); if (queryString != null) queryString = queryString + "&" + _query; else