CRM_DEBUG3("Their index (%d), our index (%d)", your_index, my_index);
cl_log(LOG_DEBUG, "%s (index=%d), our index (%d)", vote_from, your_index, my_index);
do_election_count_vote(long long action,		       enum crmd_fsa_cause cause,		       enum crmd_fsa_state cur_state,		       enum crmd_fsa_input current_input,		       void *data){	gboolean we_loose = FALSE;	xmlNodePtr vote = (xmlNodePtr)data;	unsigned int my_born = -1, your_born = -1;	int lpc = 0, my_index = -1, your_index = -1;	enum crmd_fsa_input election_result = I_NULL;	const char *vote_from = xmlGetProp(vote, XML_ATTR_HOSTFROM);		FNIN();	if(vote_from == NULL || strcmp(vote_from, fsa_our_uname) == 0) {		// dont count our own vote		FNRET(election_result);	}	CRM_DEBUG2("Max bornon (%d)", your_born);		for(; (your_index < 0 && my_index < 0)		    || lpc < fsa_membership_copy->members_size; lpc++) {		#ifdef CCM_UNAME		const char *node_uname =			fsa_membership_copy->members[lpc].node_uname;#else		const char *node_uname = "";#endif				if(node_uname != NULL) {			if(strcmp(vote_from, node_uname) == 0) {				your_born = fsa_membership_copy->members[lpc].node_born_on;				your_index = lpc;			} else if (strcmp(fsa_our_uname, node_uname) == 0) {				my_born = fsa_membership_copy->members[lpc].node_born_on;				my_index = lpc;			}		}	}		CRM_DEBUG3("Their index (%d), our index (%d)",		   your_index, my_index);	CRM_DEBUG3("Their bornon (%d), our bornon (%d)",		   your_born, my_born);	if(your_born < my_born) {		we_loose = TRUE;	} else if(your_index < my_index) {		we_loose = TRUE;	} else {		CRM_DEBUG("We might win... we should vote (possibly again)");					// do vote (it safe to call this multiple times)		election_result =			do_election_vote(action,					 cause,					 cur_state,					 current_input,					 data);	}	if(we_loose) {		CRM_DEBUG("We lost the election");		if(fsa_input_register & R_THE_DC) {			CRM_DEBUG("Give up the DC");			election_result = I_RELEASE_DC;		} else {			CRM_DEBUG("We werent the DC anyway");			election_result = I_NOT_DC;		}				// cancel timer, its been decided		stopTimer(election_timeout);	}		FNRET(election_result);}