Skip to content

Commit 59a2ce2

Browse files
committed
Complete fix for BZ 69285. Optimize creation of ParameterMap
Based on sample code and test cases provided by John Engebretson
1 parent 3d77f8e commit 59a2ce2

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

java/org/apache/catalina/core/ApplicationHttpRequest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -732,7 +732,12 @@ void parseParameters() {
732732
return;
733733
}
734734

735-
parameters = new ParameterMap<>(getRequest().getParameterMap());
735+
Map<String,String[]> requestParameters = getRequest().getParameterMap();
736+
if (requestParameters instanceof ParameterMap<String,String[]>) {
737+
parameters = new ParameterMap<>((ParameterMap<String,String[]>) requestParameters);
738+
} else {
739+
parameters = new ParameterMap<>(requestParameters);
740+
}
736741
mergeParameters();
737742
((ParameterMap<String,String[]>) parameters).setLocked(true);
738743
parsedParams = true;

webapps/docs/changelog.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,11 @@
123123
attribute value will also be used by the default and WebDAV Servlets.
124124
(remm)
125125
</update>
126+
<fix>
127+
<bug>69285</bug>: Optimise the creation of the parameter map for
128+
included requests. Based on sample code and test cases provided by John
129+
Engebretson. (markt)
130+
</fix>
126131
<fix>
127132
<bug>69527</bug>: Avoid rare cases where a cached resource could be set
128133
with 0 content length, or could be evicted immediately. (remm)

0 commit comments

Comments
 (0)