case C_SUBSYSTEM_CONNECT:
register_fsa_input_adv(	enum crmd_fsa_cause cause, enum crmd_fsa_input input,	void *data, long long with_actions,	gboolean after, const char *raised_from){	int old_len = g_list_length(fsa_message_queue);	fsa_data_t *fsa_data = NULL;		crm_debug("%s raised FSA input %s (cause=%s) %s data",		  raised_from,fsa_input2string(input),		  fsa_cause2string(cause), data?"with":"without");	if(input == I_WAIT_FOR_EVENT) {		do_fsa_stall = TRUE;		crm_debug("Stalling the FSA pending further input");	}	if(input == I_NULL && with_actions == A_NOTHING /* && data == NULL */){		/* no point doing anything */		return;	}		crm_malloc(fsa_data, sizeof(fsa_data_t));	fsa_data->id        = ++last_data_id;	fsa_data->fsa_input = input;	fsa_data->fsa_cause = cause;	fsa_data->where     = raised_from;	fsa_data->data      = NULL;	fsa_data->actions   = with_actions;	if(with_actions != A_NOTHING) {		crm_debug("Adding actions %.16llx to input", with_actions);	}		if(data != NULL) {		switch(cause) {			case C_CRMD_STATUS_CALLBACK:			case C_IPC_MESSAGE:			case C_HA_MESSAGE:				crm_debug("Copying %s data from %s as XML",					  fsa_cause2string(cause),					  raised_from);				fsa_data->data = copy_xml_node_recursive(data);				break;							case C_LRM_OP_CALLBACK:				crm_debug("Copying %s data from %s as lrm_op_t",					  fsa_cause2string(cause),					  raised_from);				fsa_data->data = copy_lrm_op((lrm_op_t*)data);				break;							case C_CCM_CALLBACK:				crm_debug("Copying %s data from %s as CCM data",					  fsa_cause2string(cause),					  raised_from);				fsa_data->data = copy_ccm_data(data);				break;							case C_LRM_MONITOR_CALLBACK:			case C_TIMER_POPPED:			case C_SHUTDOWN:			case C_HEARTBEAT_FAILED:			case C_SUBSYSTEM_CONNECT:			case C_HA_DISCONNECT:			case C_ILLEGAL:			case C_UNKNOWN:			case C_STARTUP:				crm_err("Copying %s data (from %s)"					" not implemented",					fsa_cause2string(cause), raised_from);				exit(1);				break;		}		crm_trace("%s data copied",			  fsa_cause2string(fsa_data->fsa_cause));	}		/* make sure to free it properly later */	if(after) {		fsa_message_queue = g_list_append(			fsa_message_queue, fsa_data);	} else {		fsa_message_queue = g_list_prepend(			fsa_message_queue, fsa_data);	}		crm_verbose("Queue len: %d -> %d", old_len,		  g_list_length(fsa_message_queue));		if(old_len == g_list_length(fsa_message_queue)){		crm_err("Couldnt add message to the queue");	}	}