libpurple/protocols/jabber/caps.c

branch
cpw.darkrain42.xmpp.bosh
changeset 24714
2ba5d09cf046
parent 23604
f34d41640be2
parent 24029
b6955f09ca0b
child 24715
69aaae59e205
--- a/libpurple/protocols/jabber/caps.c	Thu Nov 20 21:13:56 2008 +0000
+++ b/libpurple/protocols/jabber/caps.c	Thu Nov 20 21:57:52 2008 +0000
@@ -419,7 +419,6 @@
 	/* collect data and fetch all exts */
 	xmlnode *query = xmlnode_get_child_with_namespace(packet, "query",
 		"http://jabber.org/protocol/disco#info");
-	xmlnode *child;
 	jabber_caps_cbplususerdata *userdata = data;
 
 	/* TODO: Better error checking! */
@@ -454,6 +453,8 @@
 		
 		JabberCapsValue *value = g_new0(JabberCapsValue, 1);
 		JabberCapsKey *key = g_new0(JabberCapsKey, 1);
+		xmlnode *child;
+		GList *iter;
 #if 0
 		value->ext = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, jabber_caps_ext_destroy_value);
 #endif
@@ -495,24 +496,30 @@
 
 		g_hash_table_replace(capstable, key, value);
 		jabber_caps_store();
-	}
+
 
 #if 0
-	/* fetch all exts */
-	for(iter = userdata->ext; iter; iter = g_list_next(iter)) {
-		JabberIq *iq = jabber_iq_new_query(js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#info");
-		xmlnode *query = xmlnode_get_child_with_namespace(iq->node, "query", "http://jabber.org/protocol/disco#info");
-		char *node = g_strdup_printf("%s#%s", userdata->node, (const char*)iter->data);
-		jabber_ext_userdata *ext_data = g_new0(jabber_ext_userdata, 1);
-		ext_data->node = node;
-		ext_data->userdata = userdata;
+		/* fetch all exts */
+		for(iter = userdata->ext; iter; iter = g_list_next(iter)) {
+			JabberIq *iq = jabber_iq_new_query(js, JABBER_IQ_GET,
+				"http://jabber.org/protocol/disco#info");
+			xmlnode *query = xmlnode_get_child_with_namespace(iq->node,
+				"query", "http://jabber.org/protocol/disco#info");
+			char *node = g_strdup_printf("%s#%s", userdata->node, (const char*)iter->data);
+			jabber_ext_userdata *ext_data = g_new0(jabber_ext_userdata, 1);
+			ext_data->node = node;
+			ext_data->userdata = userdata;
 
-		xmlnode_set_attrib(query, "node", node);
-		xmlnode_set_attrib(iq->node, "to", userdata->who);
+			xmlnode_set_attrib(query, "node", node);
+			xmlnode_set_attrib(iq->node, "to", userdata->who);
 
-		jabber_iq_set_callback(iq, jabber_caps_ext_iqcb, ext_data);
-		jabber_iq_send(iq);
-	}
+			jabber_iq_set_callback(iq, jabber_caps_ext_iqcb, ext_data);
+			jabber_iq_send(iq);
+		}
+
+	} else
+		/* Don't wait for the ext discoveries; they aren't going to happen */
+		userdata->extOutstanding = 0;
 
 	jabber_caps_get_info_check_completion(userdata);
 #endif

mercurial