send_xmlha_message(hb_fd, action, dest_node, NULL); 
send_xmlha_message(hb_cluster, action, dest_node, NULL); 
relay_ipc_to_ha(xmlNodePtr action){    if(action == NULL) return;    const char *type = xmlGetProp(action, XML_MSG_ATTR_MSGTYPE);    const char *from = xmlGetProp(action, XML_MSG_ATTR_SRCSUBSYS);    const char *to = xmlGetProp(action, XML_MSG_ATTR_SUBSYS);    const char *reference = xmlGetProp(action, XML_MSG_ATTR_REFERENCE);    gpointer destination = NULL;    cl_log(LOG_DEBUG, "relaying msg (type=%s, ref=%s, from=%s) to HA", type, reference, from);    if(strcmp("response", type) == 0)    {	CRM_DEBUG("Generating key to look up hash table with");	gpointer action_ref = (gpointer)generate_hash_key(reference, from);	CRM_DEBUG2("Created key (%s)", (char*)action_ref);	destination = g_hash_table_lookup (pending_actions, action_ref);	CRM_DEBUG2("Looked up hash tabel and found value (%s)", (char*)destination);		if(destination == NULL)	{	    cl_log(LOG_INFO,		   "Dont know anything about a message with reference number (%s) for sub-system (%s)... discarding response.",		   reference, to);	    return;	}    }    if(validate_crm_message(action, NULL, NULL) == NULL)    {	cl_log(LOG_ERR, "Message to relay from (%s) to (%s) via heartbeat was invalid, ignoring", from, to);	return;    }        char *dest_node, *dest_sys;    CRM_DEBUG("Decoding destination");    if(decode_hash_value(destination, &dest_node, &dest_sys))    {	CRM_DEBUG3("Decoded destination (%s, %s)", dest_node, dest_sys);	xmlSetProp(action, XML_MSG_ATTR_SUBSYS, dest_sys);	cl_log(LOG_DEBUG, "setting (%s=%s) on HA message", XML_MSG_ATTR_SUBSYS, dest_sys);	send_xmlha_message(hb_fd, action, dest_node, NULL);    }    else    {	cl_log(LOG_INFO, "Could not decode hash value (%s)... Discarding message.", (char*)destination);    }    //    g_hash_table_remove (pending_actions, action_ref);  // see note in updateReferenceTable()}
8182	/local/tlutelli/issta_data/temp/c/2005_temp/2005/8182/ea49e927cf7a87359e44d087341624427b4dacc8/crmd.c/buggy/crm/crmd/crmd.c