comparison libpurple/protocols/jabber/disco.c @ 26465:ae41d8e827e3

Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
author Paul Aurich <paul@darkrain42.org>
date Fri, 13 Mar 2009 02:26:45 +0000
parents 439f07ce4c8a
children cde07a2e4531
comparison
equal deleted inserted replaced
26464:a4a5825fb1bb 26465:ae41d8e827e3
43 feature = xmlnode_new_child(query, "feature"); \ 43 feature = xmlnode_new_child(query, "feature"); \
44 xmlnode_set_attrib(feature, "var", x); \ 44 xmlnode_set_attrib(feature, "var", x); \
45 } 45 }
46 46
47 static void 47 static void
48 jabber_disco_bytestream_server_cb(JabberStream *js, xmlnode *packet, gpointer data) { 48 jabber_disco_bytestream_server_cb(JabberStream *js, const char *from,
49 JabberIqType type, const char *id,
50 xmlnode *packet, gpointer data)
51 {
49 JabberBytestreamsStreamhost *sh = data; 52 JabberBytestreamsStreamhost *sh = data;
50 const char *from = xmlnode_get_attrib(packet, "from");
51 xmlnode *query = xmlnode_get_child_with_namespace(packet, "query", 53 xmlnode *query = xmlnode_get_child_with_namespace(packet, "query",
52 "http://jabber.org/protocol/bytestreams"); 54 "http://jabber.org/protocol/bytestreams");
53 55
54 if (from && !strcmp(from, sh->jid) && query != NULL) { 56 if (from && !strcmp(from, sh->jid) && query != NULL) {
55 xmlnode *sh_node = xmlnode_get_child(query, "streamhost"); 57 xmlnode *sh_node = xmlnode_get_child(query, "streamhost");
382 } 384 }
383 385
384 } 386 }
385 387
386 static void 388 static void
387 jabber_disco_server_info_result_cb(JabberStream *js, xmlnode *packet, gpointer data) 389 jabber_disco_server_info_result_cb(JabberStream *js, const char *from,
390 JabberIqType type, const char *id,
391 xmlnode *packet, gpointer data)
388 { 392 {
389 xmlnode *query, *child; 393 xmlnode *query, *child;
390 const char *from = xmlnode_get_attrib(packet, "from"); 394
391 const char *type = xmlnode_get_attrib(packet, "type"); 395 if (!from || strcmp(from, js->user->domain)) {
392
393 if((!from || !type) ||
394 (strcmp(from, js->user->domain))) {
395 jabber_disco_finish_server_info_result_cb(js); 396 jabber_disco_finish_server_info_result_cb(js);
396 return; 397 return;
397 } 398 }
398 399
399 if(strcmp(type, "result")) { 400 if (type == JABBER_IQ_ERROR) {
400 /* A common way to get here is for the server not to support xmlns http://jabber.org/protocol/disco#info */ 401 /* A common way to get here is for the server not to support xmlns http://jabber.org/protocol/disco#info */
401 jabber_disco_finish_server_info_result_cb(js); 402 jabber_disco_finish_server_info_result_cb(js);
402 return; 403 return;
403 } 404 }
404 405
455 456
456 jabber_disco_finish_server_info_result_cb(js); 457 jabber_disco_finish_server_info_result_cb(js);
457 } 458 }
458 459
459 static void 460 static void
460 jabber_disco_server_items_result_cb(JabberStream *js, xmlnode *packet, gpointer data) 461 jabber_disco_server_items_result_cb(JabberStream *js, const char *from,
462 JabberIqType type, const char *id,
463 xmlnode *packet, gpointer data)
461 { 464 {
462 xmlnode *query, *child; 465 xmlnode *query, *child;
463 const char *from = xmlnode_get_attrib(packet, "from"); 466
464 const char *type = xmlnode_get_attrib(packet, "type"); 467 if (!from || strcmp(from, js->user->domain) != 0)
465 468 return;
466 if(!from || !type) 469
467 return; 470 if (type == JABBER_IQ_ERROR)
468
469 if(strcmp(from, js->user->domain))
470 return;
471
472 if(strcmp(type, "result"))
473 return; 471 return;
474 472
475 while(js->chat_servers) { 473 while(js->chat_servers) {
476 g_free(js->chat_servers->data); 474 g_free(js->chat_servers->data);
477 js->chat_servers = g_list_delete_link(js->chat_servers, js->chat_servers); 475 js->chat_servers = g_list_delete_link(js->chat_servers, js->chat_servers);