summaryrefslogtreecommitdiff
blob: d4a5780c014256e13f5c6db026443b04e91f7c8b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
--- a/lib/cluster/legacy.c	2012-11-08 11:55:09.297354491 +0100
+++ b/lib/cluster/legacy.c	2012-11-08 11:54:57.507587115 +0100
@@ -1362,17 +1362,27 @@
         /* If we can still talk to our peer process on that node,
          * then its also part of the corosync membership
          */
-        crm_trace("%s: processes=%.16x", node->uname, node->processes);
+        crm_trace("%s: processes=%.8x", node->uname, node->processes);
         return TRUE;
 
-    } else if(is_classic_ais_cluster() && (node->processes & crm_proc_plugin) == 0) {
-        crm_trace("%s: processes=%.16x", node->uname, node->processes);
-        return FALSE;
+    } else if(is_classic_ais_cluster()) {
+        if(node->processes < crm_proc_none) {
+            crm_debug("%s: unknown process list, assuming active for now", node->uname);
+            return TRUE;
+
+        } else if(is_set(node->processes, crm_proc_none)) {
+            crm_debug("%s: all processes are inactive", node->uname);
+            return FALSE;
+
+        } else if(is_not_set(node->processes, crm_proc_plugin)) {
+            crm_trace("%s: processes=%.8x", node->uname, node->processes);
+            return FALSE;
+        }
     }
 
     proc = text2proc(crm_system_name);
-    if(proc != crm_proc_none && (node->processes & proc) == 0) {
-        crm_trace("%s: proc %.16x not in %.16x", node->uname, proc, node->processes);
+    if(proc > crm_proc_none && (node->processes & proc) == 0) {
+        crm_trace("%s: proc %.8x not in %.8x", node->uname, proc, node->processes);
         return FALSE;
     }