gboolean routed = FALSE, defer = TRUE, do_process = TRUE;
gboolean routed = FALSE;
do_msg_route(long long action,	     enum crmd_fsa_cause cause,	     enum crmd_fsa_state cur_state,	     enum crmd_fsa_input current_input,	     fsa_data_t *msg_data){	enum crmd_fsa_input result = I_NULL;	ha_msg_input_t *input = fsa_typed_data(fsa_dt_ha_msg);	gboolean routed = FALSE, defer = TRUE, do_process = TRUE;	if(msg_data->fsa_cause != C_IPC_MESSAGE	   && msg_data->fsa_cause != C_HA_MESSAGE) {		/* dont try and route these */		crm_warn("Can only process HA and IPC messages");		return I_NULL;	}	if(do_process) {		/* try passing the buck first */		crm_trace("Attempting to route message");		routed = relay_message(input->msg, cause==C_IPC_MESSAGE);		if(routed == FALSE) {			crm_trace("Message wasn't routed... try handling locally");			defer = TRUE;			/* calculate defer */			result = handle_message(input);			switch(result) {				case I_NULL:					defer = FALSE;					break;				case I_DC_HEARTBEAT:					defer = FALSE;					break;				case I_CIB_OP:					defer = FALSE;					break;										/* what else should go here? */				default:					crm_trace("Defering local processing of message");					register_fsa_input_later(						cause, result, msg_data->data);					result = I_NULL;					break;			}			if( ! defer ) {				crm_trace("Message processed");			}					} else {			crm_trace("Message routed...");			input->msg = NULL;		} 	}		return result;}