diff libpurple/protocols/jabber/jabber.c @ 25600:1cbe5a9f6efb

* adding bosh files to Makefile.am & .mingw * establishing HTTP connection for BOSH
author Tobias Markmann <tfar@soc.pidgin.im>
date Tue, 05 Aug 2008 18:44:42 +0000
parents 9f8951284a2e
children 15d9825a5621
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c	Sun Aug 03 22:58:10 2008 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Tue Aug 05 18:44:42 2008 +0000
@@ -521,6 +521,12 @@
 	jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
 }
 
+static void
+jabber_bosh_login_callback(PurpleBOSHConnection *conn) 
+{
+	purple_debug_info("jabber","YAY...BOSH connection established.\n");
+}
+
 static void 
 txt_resolved_cb(PurpleTxtResponse *resp, int results, gpointer data)
 {
@@ -533,7 +539,8 @@
 		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_NETWORK_ERROR, tmp);
-		g_free(tmp);	
+		g_free(tmp);
+		return;	
 	}
 	
 	for (n = 0; n < results; n++) {
@@ -541,12 +548,19 @@
 		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]);
-			js->bosh.url = g_strdup(token[1]);
+			jabber_bosh_connection_init(&(js->bosh), gc->account, token[1]);
 			g_strfreev(token);
 			break;
 		}
 		g_strfreev(token);
 	}
+	if (js->bosh.host) {
+		js->bosh.userdata = gc;
+		js->bosh.connect_cb = jabber_bosh_login_callback;
+		jabber_bosh_connection_connect(&(js->bosh));
+	} else {
+		purple_debug_info("jabber","Didn't find an alternative connection method.\n");
+	}
 }
 
 static void