commsfwsupport/commselements/meshmachine/inc/mm_nodepeer.h
branchRCL_3
changeset 26 b564fb5fd78b
parent 25 9d7ce34704c8
--- a/commsfwsupport/commselements/meshmachine/inc/mm_nodepeer.h	Tue Aug 31 16:25:36 2010 +0300
+++ b/commsfwsupport/commselements/meshmachine/inc/mm_nodepeer.h	Wed Sep 01 12:35:48 2010 +0100
@@ -65,20 +65,35 @@
 		return Peer().Type();
 		}
 
-	TUint32 Flags() const
-		{
-		return Peer().Flags();
-		}
+    TUint32 Flags() const
+        {
+        // Non-client peers lack flags (a state early in relationship)
+        if(PeerPtr())
+            {
+            return PeerPtr()->Flags();
+            }
+        return 0;
+        }
 
-	TUint32 SetFlags(TUint32 aFlags)
-		{
-		return Peer().SetFlags(aFlags);
-		}
+    TUint32 SetFlags(TUint32 aFlags)
+        {
+        // We only require peer info to be present if an actual state change is occurring (as opposed to default handling)
+        if(aFlags)
+            {
+            return Peer().SetFlags(aFlags);
+            }
+        return Flags();
+        }
 
-	TUint32 ClearFlags(TUint32 aFlags)
-		{
-		return Peer().ClearFlags(aFlags);
-		}
+    TUint32 ClearFlags(TUint32 aFlags)
+        {
+        // We only require peer info to be present if an actual state change is occurring (as opposed to default handling)
+        if(aFlags)
+            {
+            return Peer().ClearFlags(aFlags);
+            }
+        return Flags();
+        }
 
 	const RNodeInterface& Peer() const
 		{