diff libpurple/protocols/jabber/jabber.c @ 26590:acee7d2b1983

Hide PurpleTxtResponse and use a more purple API
author Paul Aurich <paul@darkrain42.org>
date Sat, 11 Apr 2009 21:20:31 +0000
parents 400f74b95c0e
children e9a8e363d957 a8dbbcd069ab
line wrap: on
line diff
--- a/libpurple/protocols/jabber/jabber.c	Sat Apr 11 20:31:19 2009 +0000
+++ b/libpurple/protocols/jabber/jabber.c	Sat Apr 11 21:20:31 2009 +0000
@@ -584,14 +584,13 @@
 }
 
 static void 
-txt_resolved_cb(PurpleTxtResponse *resp, int results, gpointer data)
+txt_resolved_cb(GSList *responses, gpointer data)
 {
 	JabberStream *js = data;
-	int n;
-	
+
 	js->srv_query_data = NULL;
 
-	if (results == 0) {
+	if (responses == NULL) {
 		gchar *tmp;
 		tmp = g_strdup_printf(_("Could not find alternative XMPP connection methods after failing to connect directly.\n"));
 		purple_connection_error_reason (js->gc,
@@ -599,10 +598,11 @@
 		g_free(tmp);
 		return;	
 	}
-	
-	for (n = 0; n < results; n++) {
+
+	while (responses) {
+		PurpleTxtResponse *resp = responses->data;
 		gchar **token;
-		token = g_strsplit(resp[n].content, "=", 2);
+		token = g_strsplit(purple_txt_response_get_content(resp), "=", 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 = jabber_bosh_connection_init(js, token[1]);
@@ -611,17 +611,20 @@
 			break;
 		}
 		g_strfreev(token);
+		purple_txt_response_destroy(resp);
+		responses = g_slist_delete_link(responses, responses);
 	}
+
 	if (js->bosh) {
 		jabber_bosh_connection_connect(js->bosh);
 	} else {
 		purple_debug_info("jabber","Didn't find an alternative connection method.\n");
 	}
 
-	for (n = 0; n < results; ++n)
-		g_free(resp[n].content);
-
-	g_free(resp);
+	if (responses) {
+		g_slist_foreach(responses, (GFunc)purple_txt_response_destroy, NULL);
+		g_slist_free(responses);
+	}
 }
 
 static void