src/java.net.http/share/classes/jdk/internal/net/http/MultiExchange.java
branchhttp-client-branch
changeset 56264 c012b93297b0
parent 56253 875dbf6234f2
child 56282 10cebcd18d47
equal deleted inserted replaced
56263:4933a477d628 56264:c012b93297b0
    26 package jdk.internal.net.http;
    26 package jdk.internal.net.http;
    27 
    27 
    28 import java.io.IOException;
    28 import java.io.IOException;
    29 import java.lang.System.Logger.Level;
    29 import java.lang.System.Logger.Level;
    30 import java.time.Duration;
    30 import java.time.Duration;
    31 import java.util.List;
    31 import java.util.Iterator;
       
    32 import java.util.LinkedList;
    32 import java.security.AccessControlContext;
    33 import java.security.AccessControlContext;
    33 import java.util.concurrent.CompletableFuture;
    34 import java.util.concurrent.CompletableFuture;
    34 import java.util.concurrent.CompletionException;
    35 import java.util.concurrent.CompletionException;
    35 import java.util.concurrent.ExecutionException;
    36 import java.util.concurrent.ExecutionException;
    36 import java.util.concurrent.Executor;
    37 import java.util.concurrent.Executor;
    83     static final int DEFAULT_MAX_ATTEMPTS = 5;
    84     static final int DEFAULT_MAX_ATTEMPTS = 5;
    84     static final int max_attempts = Utils.getIntegerNetProperty(
    85     static final int max_attempts = Utils.getIntegerNetProperty(
    85             "jdk.httpclient.redirects.retrylimit", DEFAULT_MAX_ATTEMPTS
    86             "jdk.httpclient.redirects.retrylimit", DEFAULT_MAX_ATTEMPTS
    86     );
    87     );
    87 
    88 
    88     private final List<HeaderFilter> filters;
    89     private final LinkedList<HeaderFilter> filters;
    89     TimedEvent timedEvent;
    90     TimedEvent timedEvent;
    90     volatile boolean cancelled;
    91     volatile boolean cancelled;
    91     final PushGroup<T> pushGroup;
    92     final PushGroup<T> pushGroup;
    92 
    93 
    93     /**
    94     /**
   166     }
   167     }
   167 
   168 
   168     private HttpRequestImpl responseFilters(Response response) throws IOException
   169     private HttpRequestImpl responseFilters(Response response) throws IOException
   169     {
   170     {
   170         Log.logTrace("Applying response filters");
   171         Log.logTrace("Applying response filters");
   171         for (HeaderFilter filter : filters) {
   172         Iterator<HeaderFilter> reverseItr = filters.descendingIterator();
       
   173         while (reverseItr.hasNext()) {
       
   174             HeaderFilter filter = reverseItr.next();
   172             Log.logTrace("Applying {0}", filter);
   175             Log.logTrace("Applying {0}", filter);
   173             HttpRequestImpl newreq = filter.response(response);
   176             HttpRequestImpl newreq = filter.response(response);
   174             if (newreq != null) {
   177             if (newreq != null) {
   175                 Log.logTrace("New request: stopping filters");
   178                 Log.logTrace("New request: stopping filters");
   176                 return newreq;
   179                 return newreq;