crm_debug("Restarting the integration timer");
do_send_welcome(long long action,		enum crmd_fsa_cause cause,		enum crmd_fsa_state cur_state,		enum crmd_fsa_input current_input,		void *data){	xmlNodePtr update = NULL;	xmlNodePtr welcome = NULL;	xmlNodePtr tmp1 = NULL;	xmlNodePtr tmp2 = NULL;	const char *join_to = NULL;	if(action & A_JOIN_WELCOME && data == NULL) {		crm_err("Attempt to send welcome message "			 "without a message to reply to!");		return I_NULL;/*		return do_send_welcome_all( *//*			A_JOIN_WELCOME_ALL,cause,cur_state,current_input,data); */			} else if(action & A_JOIN_WELCOME) {		welcome = (xmlNodePtr)data;		join_to = xmlGetProp(welcome, XML_ATTR_HOSTFROM);		if(join_to != NULL) {			stopTimer(integration_timer);			/* update node status */			update = create_node_state(				join_to, join_to,				NULL, NULL, CRMD_JOINSTATE_PENDING);			tmp1 = create_cib_fragment(update, NULL);			invoke_local_cib(NULL, tmp1, CRM_OP_UPDATE);						/* Make sure they have the *whole* CIB */			tmp1 = get_cib_copy();			tmp2 = create_cib_fragment(tmp1, NULL);						send_request(NULL, tmp2, CRM_OP_REPLACE,				     join_to, CRM_SYSTEM_CRMD, NULL);						free_xml(tmp1);				free_xml(tmp2);			/* send the welcome */			send_request(NULL, NULL, CRM_OP_WELCOME,				     join_to, CRM_SYSTEM_CRMD, NULL);			free_xml(update);			free_xml(tmp1);						/* if this client is sick, we shouldnt wait forever */			startTimer(integration_timer);		} else {			crm_err("No recipient for welcome message");		}				return I_NULL;	}	return I_ERROR;}