ha_msg_del(update_msg);
crm_msg_del(update_msg);
cib_pre_notify(	const char *op, xmlNodePtr existing, xmlNodePtr update) {	HA_Message *update_msg = ha_msg_new(6);	const char *id = xmlGetProp(update, XML_ATTR_ID);	const char *type = NULL;	ha_msg_add(update_msg, F_TYPE, T_CIB_NOTIFY);	ha_msg_add(update_msg, F_SUBTYPE, T_CIB_PRE_NOTIFY);	ha_msg_add(update_msg, F_CIB_OPERATION, op);	if(id != NULL) {		ha_msg_add(update_msg, F_CIB_OBJID, id);	}	if(update != NULL) {		ha_msg_add(update_msg, F_CIB_OBJTYPE, update->name);	} else if(existing != NULL) {		ha_msg_add(update_msg, F_CIB_OBJTYPE, existing->name);	}	type = cl_get_string(update_msg, F_CIB_OBJTYPE);			if(existing != NULL) {		char *existing_s = dump_xml_unformatted(existing);		if(existing_s != NULL) {			ha_msg_add(update_msg, F_CIB_EXISTING, existing_s);		} else {			crm_debug("Update string was NULL (xml=%p)", update);		}		crm_free(existing_s);	}	if(update != NULL) {		char *update_s = dump_xml_unformatted(update);		if(update_s != NULL) {			ha_msg_add(update_msg, F_CIB_UPDATE, update_s);		} else {			crm_debug("Update string was NULL (xml=%p)", update);		}		crm_free(update_s);	}	g_hash_table_foreach(client_list, cib_notify_client, update_msg);		pending_updates++;		if(update == NULL) {		crm_verbose("Performing operation %s (on section=%s)",			    op, type);	} else {		crm_verbose("Performing %s on <%s%s%s>",			    op, type, id?" id=":"", id?id:"");	}			ha_msg_del(update_msg);}