Skip to content

Commit e7c7a83

Browse files
author
Stephane Landelle
committed
When switching from http to ws, only replace first http occurrence in the url
1 parent c9aaff8 commit e7c7a83

File tree

1 file changed

+8
-7
lines changed
  • providers/netty/src/main/java/org/asynchttpclient/providers/netty/handler

1 file changed

+8
-7
lines changed

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

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,15 @@ protected boolean redirect(Request request, NettyResponseFuture<?> future, HttpR
7373
URI uri = AsyncHttpProviderUtils.getRedirectUri(future.getURI(), location);
7474

7575
if (!uri.toString().equals(future.getURI().toString())) {
76-
final RequestBuilder nBuilder = new RequestBuilder(future.getRequest());
76+
final RequestBuilder requestBuilder = new RequestBuilder(future.getRequest());
7777
if (config.isRemoveQueryParamOnRedirect()) {
78-
nBuilder.setQueryParameters(null);
78+
requestBuilder.setQueryParameters(null);
7979
}
8080

8181
// FIXME why not do that for 301 and 307 too?
82+
// FIXME I think condition is wrong
8283
if ((status.equals(FOUND) || status.equals(SEE_OTHER)) && !(status.equals(FOUND) && config.isStrict302Handling())) {
83-
nBuilder.setMethod(HttpMethod.GET.name());
84+
requestBuilder.setMethod(HttpMethod.GET.name());
8485
}
8586

8687
// in case of a redirect from HTTP to HTTPS, future attributes might change
@@ -90,20 +91,20 @@ protected boolean redirect(Request request, NettyResponseFuture<?> future, HttpR
9091
future.setURI(uri);
9192
String newUrl = uri.toString();
9293
if (request.getUrl().startsWith(WEBSOCKET)) {
93-
newUrl = newUrl.replace(HTTP, WEBSOCKET);
94+
newUrl = newUrl.replaceFirst(HTTP, WEBSOCKET);
9495
}
9596

9697
logger.debug("Redirecting to {}", newUrl);
9798

9899
for (String cookieStr : future.getHttpHeaders().getAll(HttpHeaders.Names.SET_COOKIE)) {
99100
for (Cookie c : CookieDecoder.decode(cookieStr)) {
100-
nBuilder.addOrReplaceCookie(c);
101+
requestBuilder.addOrReplaceCookie(c);
101102
}
102103
}
103104

104105
for (String cookieStr : future.getHttpHeaders().getAll(HttpHeaders.Names.SET_COOKIE2)) {
105106
for (Cookie c : CookieDecoder.decode(cookieStr)) {
106-
nBuilder.addOrReplaceCookie(c);
107+
requestBuilder.addOrReplaceCookie(c);
107108
}
108109
}
109110

@@ -125,7 +126,7 @@ public void call() throws Exception {
125126
callback.call();
126127
}
127128

128-
Request target = nBuilder.setUrl(newUrl).build();
129+
Request target = requestBuilder.setUrl(newUrl).build();
129130
future.setRequest(target);
130131
// FIXME why not reuse the channel is same host?
131132
requestSender.sendNextRequest(target, future);

0 commit comments

Comments
 (0)