Skip to content

Commit 3e09cb2

Browse files
committed
clean up
1 parent abbecbc commit 3e09cb2

File tree

2 files changed

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

2 files changed

+96
-103
lines changed

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

Lines changed: 49 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -122,72 +122,68 @@ protected boolean exitAfterHandlingRedirect(//
122122
// We must allow 401 handling again.
123123
future.getAndSetAuth(false);
124124

125+
// if we are to strictly handle 302, we should keep the
126+
// original method (which browsers don't)
127+
// 303 must force GET
128+
String originalMethod = request.getMethod();
129+
boolean switchToGet = !originalMethod.equals("GET") && (statusCode == 303 || (statusCode == 302 && !config.isStrict302Handling()));
130+
131+
final RequestBuilder requestBuilder = new RequestBuilder(switchToGet ? "GET" : originalMethod)//
132+
.setCookies(request.getCookies())//
133+
.setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())//
134+
.setFollowRedirect(true)//
135+
.setLocalInetAddress(request.getLocalAddress())//
136+
.setNameResolver(request.getNameResolver())//
137+
.setProxyServer(request.getProxyServer())//
138+
.setRealm(request.getRealm())//
139+
.setRequestTimeout(request.getRequestTimeout())//
140+
.setVirtualHost(request.getVirtualHost());
141+
142+
requestBuilder.setHeaders(propagatedHeaders(request, realm, switchToGet));
143+
144+
// in case of a redirect from HTTP to HTTPS, future
145+
// attributes might change
146+
final boolean initialConnectionKeepAlive = future.isKeepAlive();
147+
final Object initialPartitionKey = future.getPartitionKey();
148+
125149
HttpHeaders responseHeaders = response.headers();
126150
String location = responseHeaders.get(HttpHeaders.Names.LOCATION);
127151
Uri uri = Uri.create(future.getUri(), location);
152+
future.setUri(uri);
153+
String newUrl = uri.toUrl();
154+
if (request.getUri().getScheme().startsWith(WS)) {
155+
newUrl = newUrl.replaceFirst(HTTP, WS);
156+
}
128157

129-
//if (!uri.equals(future.getUri())) {
130-
131-
// if we are to strictly handle 302, we should keep the
132-
// original method (which browsers don't)
133-
// 303 must force GET
134-
String originalMethod = request.getMethod();
135-
boolean switchToGet = !originalMethod.equals("GET") && (statusCode == 303 || (statusCode == 302 && !config.isStrict302Handling()));
136-
137-
final RequestBuilder requestBuilder = new RequestBuilder(switchToGet ? "GET" : originalMethod)//
138-
.setCookies(request.getCookies())//
139-
.setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())//
140-
.setFollowRedirect(true)//
141-
.setLocalInetAddress(request.getLocalAddress())//
142-
.setNameResolver(request.getNameResolver())//
143-
.setProxyServer(request.getProxyServer())//
144-
.setRealm(request.getRealm())//
145-
.setRequestTimeout(request.getRequestTimeout())//
146-
.setVirtualHost(request.getVirtualHost());
147-
148-
requestBuilder.setHeaders(propagatedHeaders(request, realm, switchToGet));
149-
150-
// in case of a redirect from HTTP to HTTPS, future
151-
// attributes might change
152-
final boolean initialConnectionKeepAlive = future.isKeepAlive();
153-
final Object initialPartitionKey = future.getPartitionKey();
154-
155-
future.setUri(uri);
156-
String newUrl = uri.toUrl();
157-
if (request.getUri().getScheme().startsWith(WS)) {
158-
newUrl = newUrl.replaceFirst(HTTP, WS);
159-
}
160-
161-
logger.debug("Redirecting to {}", newUrl);
162-
163-
for (String cookieStr : responseHeaders.getAll(HttpHeaders.Names.SET_COOKIE)) {
164-
Cookie c = CookieDecoder.decode(cookieStr);
165-
if (c != null)
166-
requestBuilder.addOrReplaceCookie(c);
167-
}
158+
logger.debug("Redirecting to {}", newUrl);
168159

169-
requestBuilder.setHeaders(propagatedHeaders(future.getRequest(), realm, switchToGet));
160+
for (String cookieStr : responseHeaders.getAll(HttpHeaders.Names.SET_COOKIE)) {
161+
Cookie c = CookieDecoder.decode(cookieStr);
162+
if (c != null)
163+
requestBuilder.addOrReplaceCookie(c);
164+
}
170165

171-
final Request nextRequest = requestBuilder.setUrl(newUrl).build();
166+
requestBuilder.setHeaders(propagatedHeaders(future.getRequest(), realm, switchToGet));
172167

173-
logger.debug("Sending redirect to {}", request.getUri());
168+
final Request nextRequest = requestBuilder.setUrl(newUrl).build();
174169

175-
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(response) && !response.isChunked()) {
170+
logger.debug("Sending redirect to {}", request.getUri());
176171

177-
if (isSameHostAndProtocol(request.getUri(), nextRequest.getUri())) {
178-
future.setReuseChannel(true);
179-
} else {
180-
channelManager.drainChannelAndOffer(channel, future, initialConnectionKeepAlive, initialPartitionKey);
181-
}
172+
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(response) && !response.isChunked()) {
182173

174+
if (isSameHostAndProtocol(request.getUri(), nextRequest.getUri())) {
175+
future.setReuseChannel(true);
183176
} else {
184-
// redirect + chunking = WAT
185-
channelManager.closeChannel(channel);
177+
channelManager.drainChannelAndOffer(channel, future, initialConnectionKeepAlive, initialPartitionKey);
186178
}
187179

188-
requestSender.sendNextRequest(nextRequest, future);
189-
return true;
190-
//}
180+
} else {
181+
// redirect + chunking = WAT
182+
channelManager.closeChannel(channel);
183+
}
184+
185+
requestSender.sendNextRequest(nextRequest, future);
186+
return true;
191187
}
192188
}
193189
return false;

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

Lines changed: 47 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -117,71 +117,68 @@ protected boolean exitAfterHandlingRedirect(//
117117
// We must allow 401 handling again.
118118
future.getAndSetAuth(false);
119119

120+
String originalMethod = request.getMethod();
121+
boolean switchToGet = !originalMethod.equals("GET") && (statusCode == 303 || (statusCode == 302 && !config.isStrict302Handling()));
122+
123+
final RequestBuilder requestBuilder = new RequestBuilder(switchToGet ? "GET" : originalMethod)//
124+
.setCookies(request.getCookies())//
125+
.setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())//
126+
.setFollowRedirect(true)//
127+
.setLocalInetAddress(request.getLocalAddress())//
128+
.setNameResolver(request.getNameResolver())//
129+
.setProxyServer(request.getProxyServer())//
130+
.setRealm(request.getRealm())//
131+
.setRequestTimeout(request.getRequestTimeout())//
132+
.setVirtualHost(request.getVirtualHost());
133+
134+
requestBuilder.setHeaders(propagatedHeaders(request, realm, switchToGet));
135+
136+
// in case of a redirect from HTTP to HTTPS, future
137+
// attributes might change
138+
final boolean initialConnectionKeepAlive = future.isKeepAlive();
139+
final Object initialPartitionKey = future.getPartitionKey();
140+
120141
HttpHeaders responseHeaders = response.headers();
121142
String location = responseHeaders.get(HttpHeaders.Names.LOCATION);
122143
Uri uri = Uri.create(future.getUri(), location);
144+
future.setUri(uri);
145+
String newUrl = uri.toUrl();
146+
if (request.getUri().getScheme().startsWith(WS)) {
147+
newUrl = newUrl.replaceFirst(HTTP, WS);
148+
}
123149

124-
//if (!uri.equals(future.getUri())) {
125-
String originalMethod = request.getMethod();
126-
boolean switchToGet = !originalMethod.equals("GET") && (statusCode == 303 || (statusCode == 302 && !config.isStrict302Handling()));
127-
128-
final RequestBuilder requestBuilder = new RequestBuilder(switchToGet ? "GET" : originalMethod)//
129-
.setCookies(request.getCookies())//
130-
.setConnectionPoolPartitioning(request.getConnectionPoolPartitioning())//
131-
.setFollowRedirect(true)//
132-
.setLocalInetAddress(request.getLocalAddress())//
133-
.setNameResolver(request.getNameResolver())//
134-
.setProxyServer(request.getProxyServer())//
135-
.setRealm(request.getRealm())//
136-
.setRequestTimeout(request.getRequestTimeout())//
137-
.setVirtualHost(request.getVirtualHost());
138-
139-
requestBuilder.setHeaders(propagatedHeaders(request, realm, switchToGet));
140-
141-
// in case of a redirect from HTTP to HTTPS, future
142-
// attributes might change
143-
final boolean initialConnectionKeepAlive = future.isKeepAlive();
144-
final Object initialPartitionKey = future.getPartitionKey();
145-
146-
future.setUri(uri);
147-
String newUrl = uri.toUrl();
148-
if (request.getUri().getScheme().startsWith(WS)) {
149-
newUrl = newUrl.replaceFirst(HTTP, WS);
150-
}
151-
152-
logger.debug("Redirecting to {}", newUrl);
153-
154-
for (String cookieStr : responseHeaders.getAll(HttpHeaders.Names.SET_COOKIE)) {
155-
Cookie c = CookieDecoder.decode(cookieStr);
156-
if (c != null)
157-
requestBuilder.addOrReplaceCookie(c);
158-
}
150+
logger.debug("Redirecting to {}", newUrl);
159151

160-
requestBuilder.setHeaders(propagatedHeaders(future.getRequest(), realm, switchToGet));
152+
for (String cookieStr : responseHeaders.getAll(HttpHeaders.Names.SET_COOKIE)) {
153+
Cookie c = CookieDecoder.decode(cookieStr);
154+
if (c != null)
155+
requestBuilder.addOrReplaceCookie(c);
156+
}
161157

162-
final Request nextRequest = requestBuilder.setUrl(newUrl).build();
158+
requestBuilder.setHeaders(propagatedHeaders(future.getRequest(), realm, switchToGet));
163159

164-
logger.debug("Sending redirect to {}", request.getUri());
160+
final Request nextRequest = requestBuilder.setUrl(newUrl).build();
165161

166-
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(response)) {
162+
logger.debug("Sending redirect to {}", request.getUri());
167163

168-
if (isSameHostAndProtocol(request.getUri(), nextRequest.getUri())) {
169-
future.setReuseChannel(true);
170-
requestSender.drainChannelAndExecuteNextRequest(channel, future, nextRequest);
164+
if (future.isKeepAlive() && !HttpHeaders.isTransferEncodingChunked(response)) {
171165

172-
} else {
173-
channelManager.drainChannelAndOffer(channel, future, initialConnectionKeepAlive, initialPartitionKey);
174-
requestSender.sendNextRequest(nextRequest, future);
175-
}
166+
if (isSameHostAndProtocol(request.getUri(), nextRequest.getUri())) {
167+
future.setReuseChannel(true);
168+
requestSender.drainChannelAndExecuteNextRequest(channel, future, nextRequest);
176169

177170
} else {
178-
// redirect + chunking = WAT
179-
channelManager.closeChannel(channel);
171+
channelManager.drainChannelAndOffer(channel, future, initialConnectionKeepAlive, initialPartitionKey);
180172
requestSender.sendNextRequest(nextRequest, future);
181173
}
182174

183-
return true;
184-
//}
175+
} else {
176+
// redirect + chunking = WAT
177+
channelManager.closeChannel(channel);
178+
requestSender.sendNextRequest(nextRequest, future);
179+
}
180+
181+
return true;
185182
}
186183
}
187184
return false;

0 commit comments

Comments
 (0)