diff libpurple/protocols/jabber/jabber.c @ 25181:7de1f124f95a

Jabber BOSH: Many fixes * Move most of the function and structure definitions into bosh.c * Made js->bosh a pointer, the init function allocates and returns the pointer, etc. * Drop the account member of PurpleHTTPConnection * Fix many, many warnings, including a few bug-related things
author Paul Aurich <paul@darkrain42.org>
date Mon, 01 Dec 2008 05:47:04 +0000
parents 1516525c86fa
children 17b60b844803
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c	Mon Dec 01 04:00:41 2008 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Mon Dec 01 05:47:04 2008 +0000
@@ -393,7 +393,7 @@
 
 	if (js->use_bosh) {
 		xmlnode *xnode = xmlnode_from_str(data, len);
-		if (xnode) jabber_bosh_connection_send(&(js->bosh), xnode);
+		if (xnode) jabber_bosh_connection_send(js->bosh, xnode);
 		else {
 			purple_connection_error_reason(js->gc, PURPLE_CONNECTION_ERROR_OTHER_ERROR,
 							_("Someone tried to send non-XML in a Jabber world."));
@@ -572,8 +572,7 @@
 static void 
 txt_resolved_cb(PurpleTxtResponse *resp, int results, gpointer data)
 {
-	PurpleConnection *gc = data;
-	JabberStream *js = gc->proto_data;
+	JabberStream *js = data;
 	int n;
 	
 	js->srv_query_data = NULL;
@@ -581,7 +580,7 @@
 	if (results == 0) {
 		gchar *tmp;
 		tmp = g_strdup_printf(_("Could not find alternative XMPP connection methods after failing to connect directly.\n"));
-		purple_connection_error_reason (gc,
+		purple_connection_error_reason (js->gc,
 				PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
 		g_free(tmp);
 		return;	
@@ -592,15 +591,14 @@
 		token = g_strsplit(resp[n].content, "=", 2);
 		if (!strcmp(token[0], "_xmpp-client-xbosh")) {
 			purple_debug_info("jabber","Found alternative connection method using %s at %s.\n", token[0], token[1]);
-			jabber_bosh_connection_init(&(js->bosh), js->gc->account, js, token[1]);
+			js->bosh = jabber_bosh_connection_init(js, token[1]);
 			g_strfreev(token);
 			break;
 		}
 		g_strfreev(token);
 	}
-	if (js->bosh.host) {
-		js->bosh.userdata = gc;
-		jabber_bosh_connection_connect(&(js->bosh));
+	if (js->bosh) {
+		jabber_bosh_connection_connect(js->bosh);
 	} else {
 		purple_debug_info("jabber","Didn't find an alternative connection method.\n");
 	}
@@ -618,7 +616,7 @@
 			try_srv_connect(js);
 		} else {
 			purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain);
-			js->srv_query_data = purple_txt_resolve("_xmppconnect", js->user->domain, txt_resolved_cb, gc);
+			js->srv_query_data = purple_txt_resolve("_xmppconnect", js->user->domain, txt_resolved_cb, js);
 		}
 		return;
 	}
@@ -771,7 +769,7 @@
 
 	/* XXX FORCE_BOSH: Remove this */
 	if (force_bosh) {
-		js->srv_query_data = purple_txt_resolve("_xmppconnect", js->user->domain, txt_resolved_cb, gc);
+		js->srv_query_data = purple_txt_resolve("_xmppconnect", js->user->domain, txt_resolved_cb, js);
 		return;
 	}