--- a/src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java Wed Mar 07 17:16:28 2018 +0000
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java Thu Mar 08 17:41:52 2018 +0000
@@ -28,7 +28,8 @@
import java.io.IOException;
import java.lang.System.Logger.Level;
import java.time.Duration;
-import java.util.List;
+import java.util.Iterator;
+import java.util.LinkedList;
import java.security.AccessControlContext;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
@@ -85,7 +86,7 @@
"jdk.httpclient.redirects.retrylimit", DEFAULT_MAX_ATTEMPTS
);
- private final List<HeaderFilter> filters;
+ private final LinkedList<HeaderFilter> filters;
TimedEvent timedEvent;
volatile boolean cancelled;
final PushGroup<T> pushGroup;
@@ -168,7 +169,9 @@
private HttpRequestImpl responseFilters(Response response) throws IOException
{
Log.logTrace("Applying response filters");
- for (HeaderFilter filter : filters) {
+ Iterator<HeaderFilter> reverseItr = filters.descendingIterator();
+ while (reverseItr.hasNext()) {
+ HeaderFilter filter = reverseItr.next();
Log.logTrace("Applying {0}", filter);
HttpRequestImpl newreq = filter.response(response);
if (newreq != null) {