src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java
branchhttp-client-branch
changeset 56264 c012b93297b0
parent 56253 875dbf6234f2
child 56282 10cebcd18d47
--- 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) {