Mercurial > pidgin
comparison libpurple/protocols/jabber/caps.c @ 17886: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
17885:b8de63d3bf89 | 17886: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); |