# HG changeset patch # User Nathan Walp # Date 1141092015 0 # Node ID 1c2f284986b70e57a2080856b4b43a45750d2f7a # Parent 3e87f0c5287d39f77c390dcb31f6f2f69ab99616 [gaim-migrate @ 15714] really fix x:data user searches committer: Tailor Script diff -r 3e87f0c5287d -r 1c2f284986b7 src/protocols/jabber/buddy.c --- a/src/protocols/jabber/buddy.c Tue Feb 28 01:30:01 2006 +0000 +++ b/src/protocols/jabber/buddy.c Tue Feb 28 02:00:15 2006 +0000 @@ -1235,7 +1235,7 @@ GList *row = NULL; field = xmlnode_get_child(item, "field"); while(field) { - xmlnode *valuenode = xmlnode_get_child(item, "value"); + xmlnode *valuenode = xmlnode_get_child(field, "value"); if(valuenode) { char *value = xmlnode_get_data(valuenode); row = g_list_append(row, value); @@ -1293,6 +1293,7 @@ { xmlnode *query; JabberIq *iq; + char *dir_server = data; iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:search"); query = xmlnode_get_child(iq->node, "query"); @@ -1300,7 +1301,9 @@ xmlnode_insert_child(query, result); jabber_iq_set_callback(iq, user_search_result_cb, NULL); + xmlnode_set_attrib(iq->node, "to", dir_server); jabber_iq_send(iq); + g_free(dir_server); } struct user_search_info { @@ -1349,18 +1352,22 @@ static void user_search_fields_result_cb(JabberStream *js, xmlnode *packet, gpointer data) { xmlnode *query, *x; - const char *from; + const char *from, *type; - /* i forget, do i have to check for error? XXX */ if(!(from = xmlnode_get_attrib(packet, "from"))) return; + /* XXX: make a pretty error box after the string freeze */ + if(!(type = xmlnode_get_attrib(packet, "type")) || !strcmp(type, "error")) { + return; + } + if(!(query = xmlnode_get_child(packet, "query"))) return; if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) { - jabber_x_data_request(js, x, user_search_x_data_cb, NULL); + jabber_x_data_request(js, x, user_search_x_data_cb, g_strdup(from)); return; } else { struct user_search_info *usi;