Mercurial > pidgin
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); |