datacommsserver/esockserver/ssock/ss_connstates.cpp
changeset 50 afebdb533a85
parent 32 d2396c80c344
child 77 c9776eadbffd
--- a/datacommsserver/esockserver/ssock/ss_connstates.cpp	Mon May 24 18:49:19 2010 +0100
+++ b/datacommsserver/esockserver/ssock/ss_connstates.cpp	Tue Jul 20 18:12:15 2010 +0100
@@ -927,6 +927,20 @@
     return nextRet;
     }
 
+void ConnActivities::CStartAttachActivity::Cancel(MeshMachine::TNodeContextBase& aContext)
+    {
+    if (!iCSR.IsNull() && iCSR == PostedToNodeId())
+        {//iCSR is a bit akward as it isn't stored in the Node's client array. MeshMachine auto-cancelling refuses to auto-forward TCancels
+         //to nodes it can't verify they are alive. CStartAttachActivity can warrant iCSR is alive.
+        RClientInterface::OpenPostMessageClose(TNodeCtxId(ActivityId(), iNode.Id()), PostedToNodeId(), TEBase::TCancel().CRef());
+        SetError(KErrCancel);
+        }
+    else
+        {
+        CESockClientActivityBase::Cancel(aContext);
+        }
+    }
+
 
 DEFINE_SMELEMENT(CStartAttachActivity::TNoTagOrStartPrefsSetTag, NetStateMachine::MStateFork, ConnStates::TContext)
 TInt CStartAttachActivity::TNoTagOrStartPrefsSetTag::TransitionTag()