} else if(safe_str_eq(type, XML_TAG_CIB)) { crm_data_t *section_xml = NULL; const char *section = NULL; gboolean abort = FALSE;  section = XML_CIB_TAG_NODES; if(abort == FALSE) { section_xml = get_object_root(section, update); xml_child_iter(section_xml, child, NULL, abort = TRUE; break; ); } section = XML_CIB_TAG_RESOURCES; if(abort == FALSE) { section_xml = get_object_root(section, update); xml_child_iter(section_xml, child, NULL, abort = TRUE; break; ); } section = XML_CIB_TAG_CONSTRAINTS; if(abort == FALSE) { section_xml = get_object_root(section, update); xml_child_iter(section_xml, child, NULL, abort = TRUE; break; ); } section = XML_CIB_TAG_CONFIGURATION; if(abort == FALSE) { section_xml = get_object_root(section, update); xml_child_iter(section_xml, child, NULL, abort = TRUE; break; ); } if(abort) { send_complete("Non-status update", update, te_update);  }  section = XML_CIB_TAG_STATUS; if(abort == FALSE) { section_xml = get_object_root(section, update); xml_child_iter(section_xml, child, NULL, abort = TRUE; break; ); if(abort) { crm_err("Sub-optimal handling of global CIB update"); send_complete("Global status update", update, te_update); } }  
te_update_confirm(const char *event, HA_Message *msg){	int rc = -1;	gboolean done = FALSE;	const char *op = cl_get_string(msg, F_CIB_OPERATION);	const char *type = cl_get_string(msg, F_CIB_OBJTYPE);	crm_data_t *update = get_message_xml(msg, F_CIB_UPDATE);	ha_msg_value_int(msg, F_CIB_RC, &rc);	crm_debug("Processing %s...", event);	crm_log_xml_debug_2(update, "Processing update");		if(op == NULL) {		crm_err("Illegal CIB update, the operation must be specified");		send_complete("Illegal update", update, te_update);		done = TRUE;			} else if(strcmp(op, CRM_OP_CIB_ERASE) == 0) {		/* these are always unexpected, trigger the PE */		crm_err("Need to trigger an election here so that"			" the current state of all nodes is obtained");		send_complete("Erase event", update, te_update);		done = TRUE;	} else if(strcmp(op, CRM_OP_CIB_CREATE) == 0		  || strcmp(op, CRM_OP_CIB_DELETE) == 0		  || strcmp(op, CRM_OP_CIB_REPLACE) == 0		  || strcmp(op, CRM_OP_SHUTDOWN_REQ) == 0) {				/* these are always unexpected, trigger the PE */		send_complete("Non-update change", update, te_update);		done = TRUE;			} else if(strcmp(op, CRM_OP_CIB_UPDATE) != 0) {		crm_debug_2("Ignoring %s op confirmation", op);		done = TRUE;	}	if(done) {		free_xml(update);		return;	}		if(safe_str_eq(type, XML_CIB_TAG_CRMCONFIG)) {		/* ignore - for the moment */		crm_debug("Ignoring changes to the %s section", type);			} else if(safe_str_eq(type, XML_CIB_TAG_NODES)) {		/* ignore new nodes until they sign up */		crm_debug("Ignoring changes to the %s section", type);	} else if(safe_str_eq(type, XML_CIB_TAG_STATUS)) {		/* this _may_ not be un-expected */		if(extract_event(update) == FALSE) {			send_complete("Unexpected status update", update, te_update);		}	} else if(safe_str_eq(type, XML_CIB_TAG_NODES)		|| safe_str_eq(type, XML_CIB_TAG_RESOURCES)		|| safe_str_eq(type, XML_CIB_TAG_CONSTRAINTS)) {		/* these are never expected	 */		crm_debug("Aborting on changes to the %s section", type);		send_complete("Non-status update", update, te_update);	} else {		crm_err("Ignoring update confirmation for %s object", type);		crm_log_xml_debug(update, "Ignored update");	}	free_xml(update);}
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/c35043c84ad8421df958922784a50ad9ce7fab6e/callbacks.c/clean/crm/tengine/callbacks.c