Skip to content

Commit b6e7574

Browse files
committed
Fix followRedirect propagation, close AsyncHttpClient#905
1 parent 4320774 commit b6e7574

File tree

2 files changed

+18
-12
lines changed
  • providers
    • netty3/src/main/java/org/asynchttpclient/netty/handler
    • netty4/src/main/java/org/asynchttpclient/netty/handler

2 files changed

+18
-12
lines changed

providers/netty3/src/main/java/org/asynchttpclient/netty/handler/Protocol.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,15 @@ protected boolean exitAfterHandlingRedirect(//
135135
boolean switchToGet = !originalMethod.equals("GET") && (statusCode == 303 || (statusCode == 302 && !config.isStrict302Handling()));
136136

137137
final RequestBuilder requestBuilder = new RequestBuilder(switchToGet ? "GET" : originalMethod)//
138+
.setCookies(request.getCookies())//
138139
.setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())//
139-
.setInetAddress(request.getInetAddress())//
140+
.setFollowRedirect(true)//
140141
.setLocalInetAddress(request.getLocalAddress())//
141-
.setVirtualHost(request.getVirtualHost())//
142+
.setNameResolver(request.getNameResolver())//
142143
.setProxyServer(request.getProxyServer())//
143-
.setRealm(request.getRealm());
144+
.setRealm(request.getRealm())//
145+
.setRequestTimeout(request.getRequestTimeout())//
146+
.setVirtualHost(request.getVirtualHost());
144147

145148
requestBuilder.setHeaders(propagatedHeaders(request, realm, switchToGet));
146149

providers/netty4/src/main/java/org/asynchttpclient/netty/handler/Protocol.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,7 @@ public abstract class Protocol {
7070
REDIRECT_STATUSES.add(TEMPORARY_REDIRECT.code());
7171
}
7272

73-
public Protocol(ChannelManager channelManager, AsyncHttpClientConfig config, NettyAsyncHttpProviderConfig nettyConfig,
74-
NettyRequestSender requestSender) {
73+
public Protocol(ChannelManager channelManager, AsyncHttpClientConfig config, NettyAsyncHttpProviderConfig nettyConfig, NettyRequestSender requestSender) {
7574
this.channelManager = channelManager;
7675
this.config = config;
7776
this.requestSender = requestSender;
@@ -127,16 +126,20 @@ protected boolean exitAfterHandlingRedirect(//
127126
boolean switchToGet = !originalMethod.equals("GET") && (statusCode == 303 || (statusCode == 302 && !config.isStrict302Handling()));
128127

129128
final RequestBuilder requestBuilder = new RequestBuilder(switchToGet ? "GET" : originalMethod)//
129+
.setCookies(request.getCookies())//
130130
.setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())//
131-
.setInetAddress(request.getInetAddress())//
131+
.setFollowRedirect(true)//
132132
.setLocalInetAddress(request.getLocalAddress())//
133-
.setVirtualHost(request.getVirtualHost())//
133+
.setNameResolver(request.getNameResolver())//
134134
.setProxyServer(request.getProxyServer())//
135-
.setRealm(request.getRealm());
135+
.setRealm(request.getRealm())//
136+
.setRequestTimeout(request.getRequestTimeout())//
137+
.setVirtualHost(request.getVirtualHost());
136138

137139
requestBuilder.setHeaders(propagatedHeaders(request, realm, switchToGet));
138140

139-
// in case of a redirect from HTTP to HTTPS, future attributes might change
141+
// in case of a redirect from HTTP to HTTPS, future
142+
// attributes might change
140143
final boolean initialConnectionKeepAlive = future.isKeepAlive();
141144
final Object initialPartitionKey = future.getPartitionKey();
142145

@@ -176,7 +179,7 @@ protected boolean exitAfterHandlingRedirect(//
176179
channelManager.closeChannel(channel);
177180
requestSender.sendNextRequest(nextRequest, future);
178181
}
179-
182+
180183
return true;
181184
}
182185
}
@@ -193,8 +196,8 @@ protected boolean exitAfterProcessingFilters(//
193196
HttpResponseHeaders responseHeaders) throws IOException {
194197

195198
if (hasResponseFilters) {
196-
FilterContext fc = new FilterContext.FilterContextBuilder().asyncHandler(handler).request(future.getRequest())
197-
.responseStatus(status).responseHeaders(responseHeaders).build();
199+
FilterContext fc = new FilterContext.FilterContextBuilder().asyncHandler(handler).request(future.getRequest()).responseStatus(status).responseHeaders(responseHeaders)
200+
.build();
198201

199202
for (ResponseFilter asyncFilter : config.getResponseFilters()) {
200203
try {

0 commit comments

Comments
 (0)