@@ -148,7 +148,7 @@ private class HearbeatTimeoutTask extends TimerTask {
148
148
*/
149
149
@ Override
150
150
public void run () {
151
- setState ( STATE_INVALID );
151
+ cleanup ( );
152
152
error (new SocketIOException (
153
153
"Timeout Error. No heartbeat from server within life time of the socket. closing." ,
154
154
lastException ));
@@ -246,7 +246,7 @@ static public IOConnection register(String origin, SocketIO socket) {
246
246
* @return true, if successfully registered on this transport, otherwise
247
247
* false.
248
248
*/
249
- public boolean register (SocketIO socket ) {
249
+ public synchronized boolean register (SocketIO socket ) {
250
250
String namespace = socket .getNamespace ();
251
251
if (sockets .containsKey (namespace ))
252
252
return false ;
@@ -265,7 +265,7 @@ public boolean register(SocketIO socket) {
265
265
* @param socket
266
266
* the socket to be shut down
267
267
*/
268
- public void unregister (SocketIO socket ) {
268
+ public synchronized void unregister (SocketIO socket ) {
269
269
sendPlain ("0::" + socket .getNamespace ());
270
270
sockets .remove (socket .getNamespace ());
271
271
socket .getCallback ().onDisconnect ();
@@ -316,7 +316,7 @@ private void handshake() {
316
316
/**
317
317
* Connect transport.
318
318
*/
319
- private void connectTransport () {
319
+ private synchronized void connectTransport () {
320
320
if (getState () == STATE_INVALID )
321
321
return ;
322
322
setState (STATE_CONNECTING );
@@ -409,7 +409,7 @@ private IOConnection(String url, SocketIO socket) {
409
409
/**
410
410
* Cleanup. IOConnection is not usable after this calling this.
411
411
*/
412
- private void cleanup () {
412
+ private synchronized void cleanup () {
413
413
setState (STATE_INVALID );
414
414
if (transport != null )
415
415
transport .disconnect ();
@@ -747,17 +747,15 @@ public void transportMessage(String text) {
747
747
* forces a reconnect. This had become useful on some android devices which
748
748
* do not shut down TCP-connections when switching from HSDPA to Wifi
749
749
*/
750
- public void reconnect () {
751
- synchronized (this ) {
752
- if (getState () != STATE_INVALID ) {
753
- invalidateTransport ();
754
- setState (STATE_INTERRUPTED );
755
- if (reconnectTask != null ) {
756
- reconnectTask .cancel ();
757
- }
758
- reconnectTask = new ReconnectTask ();
759
- backgroundTimer .schedule (reconnectTask , 1000 );
750
+ public synchronized void reconnect () {
751
+ if (getState () != STATE_INVALID ) {
752
+ invalidateTransport ();
753
+ setState (STATE_INTERRUPTED );
754
+ if (reconnectTask != null ) {
755
+ reconnectTask .cancel ();
760
756
}
757
+ reconnectTask = new ReconnectTask ();
758
+ backgroundTimer .schedule (reconnectTask , 1000 );
761
759
}
762
760
}
763
761
0 commit comments