Skip to content

Commit 8a89706

Browse files
authored
Merge pull request TooTallNate#850 from Andreas-Bur/bug-834
Fix issue TooTallNate#834 by starting WebSocketWorker of the WebSocketServer in the start function
2 parents 564b8aa + f7b7cee commit 8a89706

File tree

3 files changed

+56
-2
lines changed

3 files changed

+56
-2
lines changed

‎src/main/java/org/java_websocket/server/WebSocketServer.java‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,6 @@ public WebSocketServer( InetSocketAddress address , int decodercount , List<Draf
211211
for( inti = 0 ; i < decodercount ; i++ ){
212212
WebSocketWorkerex = newWebSocketWorker();
213213
decoders.add( ex );
214-
ex.start();
215214
}
216215
}
217216

@@ -229,6 +228,10 @@ public void start(){
229228
if( selectorthread != null )
230229
thrownewIllegalStateException( getClass().getName() + " can only be started once." );
231230
newThread( this ).start();
231+
232+
for( WebSocketWorkerex : decoders ){
233+
ex.start();
234+
}
232235
}
233236

234237
/**

‎src/test/java/org/java_websocket/issues/AllIssueTests.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@
4141
org.java_websocket.issues.Issue732Test.class,
4242
org.java_websocket.issues.Issue764Test.class,
4343
org.java_websocket.issues.Issue765Test.class,
44-
org.java_websocket.issues.Issue825Test.class
44+
org.java_websocket.issues.Issue825Test.class,
45+
org.java_websocket.issues.Issue834Test.class
4546
})
4647
/**
4748
* Start all tests for issues
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
packageorg.java_websocket.issues;
2+
3+
importorg.java_websocket.WebSocket;
4+
importorg.java_websocket.handshake.ClientHandshake;
5+
importorg.java_websocket.server.WebSocketServer;
6+
importorg.java_websocket.util.SocketUtil;
7+
importorg.junit.Assert;
8+
importorg.junit.Test;
9+
10+
importjava.io.IOException;
11+
importjava.net.InetSocketAddress;
12+
importjava.util.Set;
13+
14+
publicclassIssue834Test{
15+
16+
@Test(timeout = 1000)
17+
publicvoidtestNoNewThreads() throwsIOException{
18+
19+
Set<Thread> threadSet1 = Thread.getAllStackTraces().keySet();
20+
21+
newWebSocketServer(newInetSocketAddress(SocketUtil.getAvailablePort())){
22+
@Override
23+
publicvoidonOpen(WebSocketconn, ClientHandshakehandshake){
24+
}
25+
26+
@Override
27+
publicvoidonClose(WebSocketconn, intcode, Stringreason, booleanremote){
28+
}
29+
30+
@Override
31+
publicvoidonMessage(WebSocketconn, Stringmessage){
32+
}
33+
34+
@Override
35+
publicvoidonError(WebSocketconn, Exceptionex){
36+
}
37+
38+
@Override
39+
publicvoidonStart(){
40+
}
41+
};
42+
43+
Set<Thread> threadSet2 = Thread.getAllStackTraces().keySet();
44+
45+
//checks that no threads are started in the constructor
46+
Assert.assertEquals(threadSet1, threadSet2);
47+
48+
}
49+
50+
}

0 commit comments

Comments
(0)