void *data)
fsa_data_t *msg_data)
do_te_invoke(long long action,	     enum crmd_fsa_cause cause,	     enum crmd_fsa_state cur_state,	     enum crmd_fsa_input current_input,	     void *data){	xmlNodePtr graph = NULL;	xmlNodePtr msg = (xmlNodePtr)data;		if(is_set(fsa_input_register, R_TE_CONNECTED) == FALSE){		crm_info("Waiting for the TE to connect");		if(data != NULL) {			free_xml(te_last_input);			te_last_input = copy_xml_node_recursive(msg);		}		return I_WAIT_FOR_EVENT;	}	if(msg == NULL) {		msg = te_last_input;		te_last_input = NULL;			} else {		free_xml(te_last_input);	}		if(action & A_TE_INVOKE) {		graph = find_xml_node(msg, "transition_graph");		if(graph == NULL) {			return I_FAIL;		}			send_request(NULL, graph, CRM_OP_TRANSITION,			     NULL, CRM_SYSTEM_TENGINE, NULL);	} else {		send_request(NULL, graph, CRM_OP_ABORT,			     NULL, CRM_SYSTEM_TENGINE, NULL);	}	/* only free it if it was a local copy */	if(data == NULL) {		free_xml(msg);	}		return I_NULL;}