Mercurial > pidgin
changeset 25651:d7c195489af3
merge of '528b6f92c03b496c915051174c5b85fc46260287'
and 'cb69e0857b1d9058d5e043a9ff3f3876c98f96f2'
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Sun, 08 Feb 2009 07:07:23 +0000 |
parents | c8606917787a (current diff) cd1e80698dbf (diff) |
children | a4cba207068f |
files | libpurple/protocols/jabber/iq.c libpurple/protocols/jabber/iq.h |
diffstat | 2 files changed, 19 insertions(+), 60 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/iq.c Sun Feb 08 06:40:15 2009 +0000 +++ b/libpurple/protocols/jabber/iq.c Sun Feb 08 07:07:23 2009 +0000 @@ -39,38 +39,8 @@ #include "utsname.h" #endif -struct _JabberIqHandlerKey -{ - char *node; - char *xmlns; -}; - -typedef struct _JabberIqHandlerKey JabberIqHandlerKey; - GHashTable *iq_handlers = NULL; -static guint iqhandler_hash(gconstpointer data) -{ - const JabberIqHandlerKey *key = data; - return g_str_hash(key->node) ^ g_str_hash(key->xmlns); -} - -static gboolean iqhandler_equal(gconstpointer a, gconstpointer b) -{ - const JabberIqHandlerKey *key_a = a; - const JabberIqHandlerKey *key_b = b; - - return (g_str_equal(key_a->node, key_b->node) && - g_str_equal(key_a->xmlns, key_b->xmlns)); -} - -static void iqhandler_destroy(gpointer data) -{ - JabberIqHandlerKey *key = data; - g_free(key->node); - g_free(key->xmlns); - g_free(key); -} JabberIq *jabber_iq_new(JabberStream *js, JabberIqType type) { @@ -387,11 +357,7 @@ /* Apparently not, so lets see if we have a pre-defined handler */ if(child && (xmlns = xmlnode_get_namespace(child))) { - JabberIqHandlerKey key; - key.node = child->name; - /* xmlns isn't being modified, I promise */ - key.xmlns = (char *)xmlns; - if((jih = g_hash_table_lookup(iq_handlers, &key))) { + if((jih = g_hash_table_lookup(iq_handlers, xmlns))) { jih(js, from, type, id, child); return; } @@ -421,35 +387,29 @@ } } -void jabber_iq_register_handler(const char *node, const char *xmlns, - JabberIqHandler *handlerfunc) +void jabber_iq_register_handler(const char *xmlns, JabberIqHandler *handlerfunc) { - JabberIqHandlerKey *key = g_new(JabberIqHandlerKey, 1); - key->node = g_strdup(node); - key->xmlns = g_strdup(xmlns); - g_hash_table_replace(iq_handlers, key, handlerfunc); + g_hash_table_replace(iq_handlers, g_strdup(xmlns), handlerfunc); } void jabber_iq_init(void) { - iq_handlers = g_hash_table_new_full(iqhandler_hash, iqhandler_equal, - iqhandler_destroy, NULL); + iq_handlers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); - jabber_iq_register_handler("mailbox", "google:mail:notify", jabber_gmail_poke); - jabber_iq_register_handler("new-mail", "google:mail:notify", jabber_gmail_poke); - jabber_iq_register_handler("query", "http://jabber.org/protocol/bytestreams", jabber_bytestreams_parse); - jabber_iq_register_handler("query", "http://jabber.org/protocol/disco#info", jabber_disco_info_parse); - jabber_iq_register_handler("query", "http://jabber.org/protocol/disco#items", jabber_disco_items_parse); - jabber_iq_register_handler("si", "http://jabber.org/protocol/si", jabber_si_parse); - jabber_iq_register_handler("query", "jabber:iq:last", jabber_iq_last_parse); - jabber_iq_register_handler("query", "jabber:iq:oob", jabber_oob_parse); - jabber_iq_register_handler("query", "jabber:iq:register", jabber_register_parse); - jabber_iq_register_handler("query", "jabber:iq:roster", jabber_roster_parse); - jabber_iq_register_handler("query", "jabber:iq:time", jabber_iq_time_parse); - jabber_iq_register_handler("query", "jabber:iq:version", jabber_iq_version_parse); - jabber_iq_register_handler("data", XEP_0231_NAMESPACE, jabber_data_parse); - jabber_iq_register_handler("ping", "urn:xmpp:ping", jabber_ping_parse); - jabber_iq_register_handler("time", "urn:xmpp:time", jabber_iq_time_parse); + jabber_iq_register_handler("google:mail:notify", jabber_gmail_poke); + jabber_iq_register_handler("http://jabber.org/protocol/bytestreams", jabber_bytestreams_parse); + jabber_iq_register_handler("http://jabber.org/protocol/disco#info", jabber_disco_info_parse); + jabber_iq_register_handler("http://jabber.org/protocol/disco#items", jabber_disco_items_parse); + jabber_iq_register_handler("http://jabber.org/protocol/si", jabber_si_parse); + jabber_iq_register_handler("jabber:iq:last", jabber_iq_last_parse); + jabber_iq_register_handler("jabber:iq:oob", jabber_oob_parse); + jabber_iq_register_handler("jabber:iq:register", jabber_register_parse); + jabber_iq_register_handler("jabber:iq:roster", jabber_roster_parse); + jabber_iq_register_handler("jabber:iq:time", jabber_iq_time_parse); + jabber_iq_register_handler("jabber:iq:version", jabber_iq_version_parse); + jabber_iq_register_handler(XEP_0231_NAMESPACE, jabber_data_parse); + jabber_iq_register_handler("urn:xmpp:ping", jabber_ping_parse); + jabber_iq_register_handler("urn:xmpp:time", jabber_iq_time_parse); } void jabber_iq_uninit(void)
--- a/libpurple/protocols/jabber/iq.h Sun Feb 08 06:40:15 2009 +0000 +++ b/libpurple/protocols/jabber/iq.h Sun Feb 08 07:07:23 2009 +0000 @@ -67,7 +67,6 @@ void jabber_iq_init(void); void jabber_iq_uninit(void); -void jabber_iq_register_handler(const char *node, const char *xmlns, - JabberIqHandler *func); +void jabber_iq_register_handler(const char *xmlns, JabberIqHandler *func); #endif /* _PURPLE_JABBER_IQ_H_ */