Skip to content

Commit a0a4135

Browse files
committed
Fix for AsyncHttpClient#45 [websocket] NPE when connection fail to connect
1 parent 18c6a54 commit a0a4135

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/main/java/com/ning/http/client/websocket/WebSocketUpgradeHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ public final void onSuccess(WebSocket webSocket) {
106106
@Override
107107
public final void onFailure(Throwable t) {
108108
for (WebSocketListener w : l) {
109-
if (!ok.get()) {
109+
if (!ok.get() && webSocket != null) {
110110
webSocket.addMessageListener(w);
111111
}
112112
w.onError(t);

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import java.util.concurrent.atomic.AtomicReference;
2323

2424
import static org.testng.Assert.assertEquals;
25+
import static org.testng.Assert.assertTrue;
26+
import static org.testng.Assert.fail;
2527

2628
public abstract class TextMessageTest extends AbstractBasicTest {
2729

@@ -100,6 +102,36 @@ public void onError(Throwable t) {
100102
assertEquals(text.get(), "OnOpen");
101103
}
102104

105+
@Test(timeOut = 60000)
106+
public void onEmptyListenerTest() throws Throwable {
107+
AsyncHttpClient c = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().build());
108+
109+
WebSocket websocket = null;
110+
try {
111+
websocket = c.prepareGet(getTargetUrl())
112+
.execute(new WebSocketUpgradeHandler.Builder().build()).get();
113+
} catch (Throwable t) {
114+
fail();
115+
}
116+
assertTrue(websocket != null);
117+
}
118+
119+
@Test(timeOut = 60000)
120+
public void onFailureTest() throws Throwable {
121+
AsyncHttpClient c = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().build());
122+
final AtomicReference<String> text = new AtomicReference<String>("");
123+
124+
WebSocket websocket = null;
125+
Throwable t = null;
126+
try {
127+
websocket = c.prepareGet("ws://abcdefg")
128+
.execute(new WebSocketUpgradeHandler.Builder().build()).get();
129+
} catch (Throwable t2) {
130+
t = t2;
131+
}
132+
assertTrue(t != null);
133+
}
134+
103135
@Test(timeOut = 60000)
104136
public void onTimeoutCloseTest() throws Throwable {
105137
AsyncHttpClient c = getAsyncHttpClient(new AsyncHttpClientConfig.Builder().build());

0 commit comments

Comments
 (0)