comparison libpurple/protocols/jabber/caps.c @ 17613:7c79957207c3

Fixed a few bugs in the caps implementation, it should work properly now.
author Andreas Monitzer <pidgin@monitzer.com>
date Wed, 27 Jun 2007 03:56:30 +0000
parents f88b3a093cba
children ce04ca030a1b
comparison
equal deleted inserted replaced
17612:b8de63d3bf89 17613:7c79957207c3
272 272
273 result->features = g_list_append(result->features,newfeat); 273 result->features = g_list_append(result->features,newfeat);
274 } 274 }
275 275
276 for(iter = ext; iter; iter = g_list_next(iter)) { 276 for(iter = ext; iter; iter = g_list_next(iter)) {
277 const char *ext = iter->data; 277 const char *extname = iter->data;
278 JabberCapsValueExt *extinfo = g_hash_table_lookup(caps->ext,ext); 278 JabberCapsValueExt *extinfo = g_hash_table_lookup(caps->ext,extname);
279 279
280 if(extinfo) { 280 if(extinfo) {
281 for(iter = extinfo->identities; iter; iter = g_list_next(iter)) { 281 GList *iter2;
282 JabberCapsIdentity *id = iter->data; 282 for(iter2 = extinfo->identities; iter2; iter2 = g_list_next(iter2)) {
283 JabberCapsIdentity *id = iter2->data;
283 JabberCapsIdentity *newid = g_new0(JabberCapsIdentity, 1); 284 JabberCapsIdentity *newid = g_new0(JabberCapsIdentity, 1);
284 newid->category = g_strdup(id->category); 285 newid->category = g_strdup(id->category);
285 newid->type = g_strdup(id->type); 286 newid->type = g_strdup(id->type);
286 newid->name = g_strdup(id->name); 287 newid->name = g_strdup(id->name);
287 288
288 result->identities = g_list_append(result->identities,newid); 289 result->identities = g_list_append(result->identities,newid);
289 } 290 }
290 for(iter = extinfo->features; iter; iter = g_list_next(iter)) { 291 for(iter2 = extinfo->features; iter2; iter2 = g_list_next(iter2)) {
291 const char *feat = iter->data; 292 const char *feat = iter2->data;
292 char *newfeat = g_strdup(feat); 293 char *newfeat = g_strdup(feat);
293 294
294 result->features = g_list_append(result->features,newfeat); 295 result->features = g_list_append(result->features,newfeat);
295 } 296 }
296 } 297 }
443 444
444 /* fetch all exts */ 445 /* fetch all exts */
445 for(iter = userdata->ext; iter; iter = g_list_next(iter)) { 446 for(iter = userdata->ext; iter; iter = g_list_next(iter)) {
446 JabberIq *iq = jabber_iq_new_query(js,JABBER_IQ_GET,"http://jabber.org/protocol/disco#info"); 447 JabberIq *iq = jabber_iq_new_query(js,JABBER_IQ_GET,"http://jabber.org/protocol/disco#info");
447 xmlnode *query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#info"); 448 xmlnode *query = xmlnode_get_child_with_namespace(iq->node,"query","http://jabber.org/protocol/disco#info");
448 char *node = g_strdup_printf("%s#%s", node, (const char*)iter->data); 449 char *node = g_strdup_printf("%s#%s", userdata->node, (const char*)iter->data);
449 xmlnode_set_attrib(query, "node", node); 450 xmlnode_set_attrib(query, "node", node);
450 g_free(node); 451 g_free(node);
451 xmlnode_set_attrib(iq->node, "to", userdata->who); 452 xmlnode_set_attrib(iq->node, "to", userdata->who);
452 453
453 jabber_iq_set_callback(iq,jabber_caps_ext_iqcb,userdata); 454 jabber_iq_set_callback(iq,jabber_caps_ext_iqcb,userdata);