comparison libpurple/protocols/jabber/disco.c @ 27616:d953b613a794

Fix picking up SI streamhosts from login server and plug a leak.
author Paul Aurich <paul@darkrain42.org>
date Tue, 14 Jul 2009 22:47:42 +0000
parents dd7e7071d46d
children 49cb3fc2c01a
comparison
equal deleted inserted replaced
27613:32d2caa6a777 27616:d953b613a794
295 capabilities |= JABBER_CAP_RETRIEVED; 295 capabilities |= JABBER_CAP_RETRIEVED;
296 296
297 if(jbr) 297 if(jbr)
298 jbr->capabilities = capabilities; 298 jbr->capabilities = capabilities;
299 299
300 jdicd->callback(js, from, capabilities, jdicd->data); 300 if (jdicd && jdicd->callback)
301 jdicd->callback(js, from, capabilities, jdicd->data);
301 } else { /* type == JABBER_IQ_ERROR or query == NULL */ 302 } else { /* type == JABBER_IQ_ERROR or query == NULL */
302 JabberID *jid; 303 JabberID *jid;
303 JabberBuddy *jb; 304 JabberBuddy *jb;
304 JabberBuddyResource *jbr = NULL; 305 JabberBuddyResource *jbr = NULL;
305 JabberCapabilities capabilities = JABBER_CAP_NONE; 306 JabberCapabilities capabilities = JABBER_CAP_NONE;
311 } 312 }
312 313
313 if(jbr) 314 if(jbr)
314 capabilities = jbr->capabilities; 315 capabilities = jbr->capabilities;
315 316
316 jdicd->callback(js, from, capabilities, jdicd->data); 317 if (jdicd && jdicd->callback)
317 } 318 jdicd->callback(js, from, capabilities, jdicd->data);
319 }
320
321 g_free(jdicd);
318 } 322 }
319 323
320 void jabber_disco_items_parse(JabberStream *js, const char *from, 324 void jabber_disco_items_parse(JabberStream *js, const char *from,
321 JabberIqType type, const char *id, 325 JabberIqType type, const char *id,
322 xmlnode *query) 326 xmlnode *query)
513 if((node = xmlnode_get_attrib(child, "node"))) 517 if((node = xmlnode_get_attrib(child, "node")))
514 continue; 518 continue;
515 519
516 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#info"); 520 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "http://jabber.org/protocol/disco#info");
517 xmlnode_set_attrib(iq->node, "to", jid); 521 xmlnode_set_attrib(iq->node, "to", jid);
522 jabber_iq_set_callback(iq, jabber_disco_info_cb, NULL);
518 jabber_iq_send(iq); 523 jabber_iq_send(iq);
519 } 524 }
520 } 525 }
521 526
522 void jabber_disco_items_server(JabberStream *js) 527 void jabber_disco_items_server(JabberStream *js)