@@ -117,71 +117,68 @@ protected boolean exitAfterHandlingRedirect(//
117
117
// We must allow 401 handling again.
118
118
future .getAndSetAuth (false );
119
119
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
+
120
141
HttpHeaders responseHeaders = response .headers ();
121
142
String location = responseHeaders .get (HttpHeaders .Names .LOCATION );
122
143
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
+ }
123
149
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 );
159
151
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
+ }
161
157
162
- final Request nextRequest = requestBuilder .setUrl ( newUrl ). build ( );
158
+ requestBuilder .setHeaders ( propagatedHeaders ( future . getRequest (), realm , switchToGet ) );
163
159
164
- logger . debug ( "Sending redirect to {}" , request . getUri () );
160
+ final Request nextRequest = requestBuilder . setUrl ( newUrl ). build ( );
165
161
166
- if ( future . isKeepAlive () && ! HttpHeaders . isTransferEncodingChunked ( response )) {
162
+ logger . debug ( "Sending redirect to {}" , request . getUri ());
167
163
168
- if (isSameHostAndProtocol (request .getUri (), nextRequest .getUri ())) {
169
- future .setReuseChannel (true );
170
- requestSender .drainChannelAndExecuteNextRequest (channel , future , nextRequest );
164
+ if (future .isKeepAlive () && !HttpHeaders .isTransferEncodingChunked (response )) {
171
165
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 );
176
169
177
170
} else {
178
- // redirect + chunking = WAT
179
- channelManager .closeChannel (channel );
171
+ channelManager .drainChannelAndOffer (channel , future , initialConnectionKeepAlive , initialPartitionKey );
180
172
requestSender .sendNextRequest (nextRequest , future );
181
173
}
182
174
183
- return true ;
184
- //}
175
+ } else {
176
+ // redirect + chunking = WAT
177
+ channelManager .closeChannel (channel );
178
+ requestSender .sendNextRequest (nextRequest , future );
179
+ }
180
+
181
+ return true ;
185
182
}
186
183
}
187
184
return false ;
0 commit comments