Skip to content

Commit 335c1dd

Browse files
committed
Grizzly side of fix for #102.
1 parent 6abc9e4 commit 335c1dd

File tree

2 files changed

+22
-12
lines changed

2 files changed

+22
-12
lines changed

src/main/java/com/ning/http/util/AsyncHttpProviderUtils.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -221,9 +221,12 @@ public final static URI getRedirectUri(URI uri, String location) {
221221

222222
String scheme = newUri.getScheme();
223223

224-
if (scheme == null || !scheme.equalsIgnoreCase("http") && !scheme.equalsIgnoreCase("https")) {
224+
if (scheme == null || !scheme.equalsIgnoreCase("http")
225+
&& !scheme.equalsIgnoreCase("https")
226+
&& !scheme.equals("ws")
227+
&& !scheme.equals("wss")) {
225228
throw new IllegalArgumentException("The URI scheme, of the URI " + newUri
226-
+ ", must be equal (ignoring case) to 'http' or 'https'");
229+
+ ", must be equal (ignoring case) to 'ws, 'wss', 'http', or 'https'");
227230
}
228231

229232
return newUri;

src/test/java/com/ning/http/client/websocket/RedirectTest.java

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.eclipse.jetty.server.Request;
2121
import org.eclipse.jetty.server.Server;
2222
import org.eclipse.jetty.server.handler.AbstractHandler;
23+
import org.eclipse.jetty.server.handler.HandlerList;
2324
import org.eclipse.jetty.server.nio.SelectChannelConnector;
2425
import org.testng.annotations.BeforeClass;
2526
import org.testng.annotations.Test;
@@ -48,20 +49,26 @@ public void setUpGlobal() throws Exception {
4849
_connector.setPort(port1);
4950

5051
addConnector(_connector);
51-
WebSocketHandler _wsHandler = getWebSocketHandler();
5252

53-
setHandler(_wsHandler);
53+
54+
5455

5556
port2 = findFreePort();
5657
final SelectChannelConnector connector2 = new SelectChannelConnector();
5758
connector2.setPort(port2);
5859
addConnector(connector2);
59-
setHandler(new AbstractHandler() {
60-
@Override
61-
public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
62-
httpServletResponse.sendRedirect(getTargetUrl());
63-
}
64-
});
60+
WebSocketHandler _wsHandler = getWebSocketHandler();
61+
HandlerList list = new HandlerList();
62+
list.addHandler(new AbstractHandler() {
63+
@Override
64+
public void handle(String s, Request request, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException, ServletException {
65+
if (request.getLocalPort() == port2) {
66+
httpServletResponse.sendRedirect(getTargetUrl());
67+
}
68+
}
69+
});
70+
list.addHandler(_wsHandler);
71+
setHandler(list);
6572

6673
start();
6774
log.info("Local HTTP server started successfully");
@@ -81,11 +88,11 @@ public org.eclipse.jetty.websocket.WebSocket doWebSocketConnect(HttpServletReque
8188

8289
@Test(timeOut = 60000)
8390
public void testRedirectToWSResource() throws Exception {
84-
AsyncHttpClient c = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().build());
91+
AsyncHttpClient c = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().setFollowRedirects(true).build());
8592
final CountDownLatch latch = new CountDownLatch(1);
8693
final AtomicReference<String> text = new AtomicReference<String>("");
8794

88-
WebSocket websocket = c.prepareGet(getTargetUrl())
95+
WebSocket websocket = c.prepareGet(getRedirectURL())
8996
.execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() {
9097

9198
@Override

0 commit comments

Comments
 (0)