send_success("success");
send_complete("success", NULL, te_done);
timer_callback(gpointer data){	te_timer_t *timer = NULL;		if(data == NULL) {		crm_err("Timer popped with no data");		return FALSE;	}		timer = (te_timer_t*)data;	if(timer->source_id > 0) {		g_source_remove(timer->source_id);	}	timer->source_id = -1;		if(timer->reason == timeout_fuzz) {		crm_warn("Transition timeout reached..."			 " marking transition complete.");		send_success("success");		return TRUE;	} else if(timer->reason == timeout_timeout) {				/* global timeout - abort the transition */		crm_warn("Transition timeout reached..."			 " marking transition complete.");				crm_warn("Some actions may not have been executed.");					send_success(XML_ATTR_TIMEOUT);				return TRUE;			} else if(timer->action == NULL) {		crm_err("Action not present!");		return FALSE;			} else {		/* fail the action		 * - which may or may not abort the transition		 */		/* TODO: send a cancel notice to the LRM */		/* TODO: use the ack from above to update the CIB */		return do_update_cib(timer->action->xml, LRM_OP_TIMEOUT);	}}