diff libpurple/protocols/jabber/jabber.c @ 27006:d31af94a715d

Use the jabber-sending-xmlnode signal to send all XMPP stanzas. Allows plugins to send stanzas instead of stringifying+send_raw; allows other plugins to see the sending stanzas. This may be a little hacky; I'm on the fence.
author Paul Aurich <paul@darkrain42.org>
date Wed, 03 Jun 2009 06:45:25 +0000
parents 60cb86295f08
children 335d737c396e
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c	Wed Jun 03 06:03:22 2009 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Wed Jun 03 06:45:25 2009 +0000
@@ -449,22 +449,25 @@
 	return len;
 }
 
-void jabber_send(JabberStream *js, xmlnode *packet)
+void jabber_send_signal_cb(PurpleConnection *pc, xmlnode **packet,
+                           gpointer unused)
 {
 	char *txt;
 	int len;
 
-	purple_signal_emit(jabber_plugin, "jabber-sending-xmlnode", js->gc, &packet);
-
-	/* if we get NULL back, we're done processing */
-	if(NULL == packet)
+	if (NULL == packet)
 		return;
 
-	txt = xmlnode_to_str(packet, &len);
-	jabber_send_raw(js, txt, len);
+	txt = xmlnode_to_str(*packet, &len);
+	jabber_send_raw(purple_connection_get_protocol_data(pc), txt, len);
 	g_free(txt);
 }
 
+void jabber_send(JabberStream *js, xmlnode *packet)
+{
+	purple_signal_emit(jabber_plugin, "jabber-sending-xmlnode", js->gc, &packet);
+}
+
 static gboolean jabber_keepalive_timeout(PurpleConnection *gc)
 {
 	JabberStream *js = gc->proto_data;