if(g_hash_table_size(finalized_nodes) == 0) { crm_info("That was the last outstanding join confirmation");  if(is_set(fsa_input_register, R_HAVE_CIB)) { crm_info("Transition complete"); register_fsa_input_later( C_FSA_INTERNAL, I_FINALIZED, NULL); } else { crm_info("Delaying completion until CIB is sync'd"); }  } else { /* dont waste time by invoking the pe yet; */ crm_debug("Still waiting on %d outstanding join confirmations", g_hash_table_size(finalized_nodes)); } 
check_join_state(fsa_state, __FUNCTION__); 
process_join_ack_msg(const char *join_from, crm_data_t *lrm_update){	/* now update them to "member" */	crm_data_t *update = NULL;	const char *join_state = NULL;		crm_debug("Processing ack from %s", join_from);	join_state = (const char *)		g_hash_table_lookup(finalized_nodes, join_from);		if(join_state == NULL) {		crm_err("Join not in progress: ignoring join from %s",			join_from);		return FALSE;			} else if(safe_str_neq(join_state, CRMD_JOINSTATE_MEMBER)) {		crm_err("Node %s wasnt invited to join the cluster",join_from);		g_hash_table_remove(finalized_nodes, join_from);		return FALSE;	} else {		g_hash_table_remove(finalized_nodes, join_from);	}		if(g_hash_table_lookup(confirmed_nodes, join_from) != NULL) {		crm_err("hash already contains confirmation from %s",join_from);	}		g_hash_table_insert(confirmed_nodes, crm_strdup(join_from),			    crm_strdup(CRMD_JOINSTATE_MEMBER));	/* the updates will actually occur in reverse order because of	 * the LIFO nature of the fsa input queue	 */		/* update CIB with the current LRM status from the node */	update_local_cib(copy_xml_node_recursive(lrm_update));	/* update node entry in the status section  */	crm_info("4) Updating node state to %s for %s", join_state, join_from);	update = create_node_state(		join_from, join_from,		ACTIVESTATUS, NULL, ONLINESTATUS, join_state, join_state);	set_xml_property_copy(update,XML_CIB_ATTR_EXPSTATE, CRMD_STATE_ACTIVE);	update_local_cib(create_cib_fragment(update, NULL));	if(g_hash_table_size(finalized_nodes) == 0) {		crm_info("That was the last outstanding join confirmation");		if(is_set(fsa_input_register, R_HAVE_CIB)) {			crm_info("Transition complete");			register_fsa_input_later(				C_FSA_INTERNAL, I_FINALIZED, NULL);		} else {			crm_info("Delaying completion until CIB is sync'd");		}			} else {		/* dont waste time by invoking the pe yet; */		crm_debug("Still waiting on %d outstanding join confirmations",			  g_hash_table_size(finalized_nodes));	}		return TRUE;}
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/4be39a1bd7e0a34ca77ae3ce2f26746e16e1cb92/join_dc.c/clean/crm/crmd/join_dc.c