Mercurial > pidgin
diff libpurple/protocols/jabber/message.c @ 26870:92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Tue, 12 May 2009 05:49:34 +0000 |
parents | aa29dac7924f |
children | eeee4309d3d8 0bce1b58e1fe |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/message.c Mon May 11 22:05:00 2009 +0000 +++ b/libpurple/protocols/jabber/message.c Tue May 12 05:49:34 2009 +0000 @@ -532,16 +532,25 @@ void jabber_message_parse(JabberStream *js, xmlnode *packet) { JabberMessage *jm; - const char *type; + const char *id, *from, *to, *type; xmlnode *child; + gboolean signal_return; + + from = xmlnode_get_attrib(packet, "from"); + id = xmlnode_get_attrib(packet, "id"); + to = xmlnode_get_attrib(packet, "to"); + type = xmlnode_get_attrib(packet, "type"); + + signal_return = GPOINTER_TO_INT(purple_signal_emit_return_1(jabber_plugin, + "jabber-receiving-message", js->gc, type, id, from, to, packet)); + if (signal_return) + return; jm = g_new0(JabberMessage, 1); jm->js = js; jm->sent = time(NULL); jm->delayed = FALSE; - type = xmlnode_get_attrib(packet, "type"); - if(type) { if(!strcmp(type, "normal")) jm->type = JABBER_MESSAGE_NORMAL; @@ -559,9 +568,9 @@ jm->type = JABBER_MESSAGE_NORMAL; } - jm->from = g_strdup(xmlnode_get_attrib(packet, "from")); - jm->to = g_strdup(xmlnode_get_attrib(packet, "to")); - jm->id = g_strdup(xmlnode_get_attrib(packet, "id")); + jm->from = g_strdup(from); + jm->to = g_strdup(to); + jm->id = g_strdup(id); for(child = packet->child; child; child = child->next) { const char *xmlns = xmlnode_get_namespace(child);