From 48a4245a5bb89eb90fb79af0898277d4935816e8 Mon Sep 17 00:00:00 2001 From: Sam Ma Date: Wed, 24 Aug 2016 22:45:45 +1000 Subject: [PATCH] trigger CANCELING.onCanceled() when stopping on connecting state --- .../fusesource/hawtdispatch/transport/TcpTransport.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hawtdispatch-transport/src/main/java/org/fusesource/hawtdispatch/transport/TcpTransport.java b/hawtdispatch-transport/src/main/java/org/fusesource/hawtdispatch/transport/TcpTransport.java index 4c2933a..6e85fac 100644 --- a/hawtdispatch-transport/src/main/java/org/fusesource/hawtdispatch/transport/TcpTransport.java +++ b/hawtdispatch-transport/src/main/java/org/fusesource/hawtdispatch/transport/TcpTransport.java @@ -129,7 +129,8 @@ void add(Task onCompleted) { } void onCanceled() { trace("CANCELING.onCanceled"); - remaining--; + // it could be zero when neither readSource nor writeSource has been initialized yet + if (remaining > 0) remaining--; if( remaining!=0 ) { return; } @@ -463,6 +464,10 @@ public void run() { public void run() { // No need to complete if we have been canceled. if( ! socketState.is(CONNECTING.class) ) { + // fire onCanceled() for CANCELLING state. otherwise, it will never be triggered + if ( socketState.is(CANCELING.class)) { + socketState.onCanceled(); + } return; } try {