send_xmlha_message(fsa_cluster_conn, action);
if(log_level == LOG_ERR || (safe_str_neq(op, CRM_OP_HBEAT))) { do_crm_log(log_level, __FUNCTION__, "Sending %sHA message (ref=%s) to %s@%s %s.", broadcast?"broadcast ":"directed ", cl_get_string(msg, XML_ATTR_REFERENCE), crm_str(sys_to), host_to==NULL?"<all>":host_to, all_is_good?"succeeded":"failed"); }  #ifdef MSG_LOG { const char *data_text = cl_get_string(msg, F_CRM_DATA); xmlNodePtr xml_data = string2xml(data_text); char *msg_text = dump_xml_formatted(xml_data); if(msg_out_strm == NULL) { msg_out_strm = fopen(DEVEL_DIR"/outbound.log", "w"); } if(msg_text != NULL) { fprintf(msg_out_strm, "[%s HA (%s:%d)]\t%s\n", all_is_good?"succeeded":"failed", cl_get_string(msg, XML_ATTR_REFERENCE), send_result, msg_text);  fflush(msg_out_strm); crm_free(msg_text); } } #endif  ha_msg_del(msg);
send_msg_via_ha(xmlNodePtr action, const char *dest_node){		if (action == NULL) {		return;	} else if (validate_crm_message(action, NULL, NULL, NULL) == NULL) {		crm_err("Relay message to (%s) via HA was invalid, ignoring",			dest_node);		return;	}/*	crm_verbose("Relaying message to (%s) via HA", dest_node); */	set_xml_property_copy(action, XML_ATTR_HOSTTO, dest_node);	send_xmlha_message(fsa_cluster_conn, action);	return;}