diff --git a/mqtt-client/src/main/java/org/fusesource/mqtt/client/CallbackConnection.java b/mqtt-client/src/main/java/org/fusesource/mqtt/client/CallbackConnection.java index 9aadb95..9c439d9 100644 --- a/mqtt-client/src/main/java/org/fusesource/mqtt/client/CallbackConnection.java +++ b/mqtt-client/src/main/java/org/fusesource/mqtt/client/CallbackConnection.java @@ -215,6 +215,15 @@ public void run() { } } else { + + if(transport!=null) { + transport.stop(new Task() { + @Override + public void run() { + listener.onDisconnected(); + } + }); + } // nope. handleFatalFailure(error); } @@ -714,7 +723,7 @@ private void send(Acked command, Callback cb) { send(new Request(id, command.encode(), cb)); } - private void send(Request request) { + private synchronized void send(Request request) { if( failure !=null ) { if( request.cb!=null ) { request.cb.onFailure(failure);