--- a/datacommsserver/esockserver/core_states/ss_corepractivities.h Thu Dec 17 09:22:25 2009 +0200
+++ b/datacommsserver/esockserver/core_states/ss_corepractivities.h Thu Jan 07 13:34:53 2010 +0200
@@ -174,6 +174,7 @@
protected:
CDestroyActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode);
virtual void Destroy();
+ virtual TBool Next(MeshMachine::TNodeContextBase& aContext);
//States, StateForks & StateTransitions
protected:
@@ -435,7 +436,9 @@
IMPORT_C CBindToActivity(const MeshMachine::TNodeActivity& aActivitySig, MeshMachine::AMMNodeBase& aNode, TInt aNextActivityCount);
protected:
- Messages::RNodeInterface* iNewServiceProvider;
+ // We cannot store iNewServiceProvider as an RNodeInterface* in case an activity (like GoneDown) executes simultaneously and removes
+ // the client we hold a reference to. Hence use the NodeId and lookup the corresponding RNodeInterface* as and when required.
+ Messages::TNodeId iNewServiceProvider;
private:
Messages::RNodeInterface* iCurrentDataClient;
RPointerArray<Messages::RNodeInterface> iSuccessfulDataClients;