annotate libpurple/protocols/jabber/roster.c @ 32040:06ed9020b784

jabber: Treat empty <group/> elements as "Buddies", not "" This ultimately led to duplicates in the list, because we had one entry in the GSList as "", and one as NULL, both of which are invalid group names, which resulted in the core blithely replacing them with "Buddies" and generating duplicates. I've tested with and without, and can reproduce the issues without the change. Log: <item subscription='both' name='person' jid='person@example.com'><group></group><group></group></item> (19:32:23) jabber: jabber_roster_parse(): Removing person@example.com from group 'Buddies' on the local list (19:32:23) GLib: g_string_append: assertion `val != NULL' failed (19:32:23) jabber: jabber_roster_parse(): Adding person@example.com to groups: , (19:32:23) g_log: purple_find_group: assertion `(name != NULL) && (*name != '\0')' failed (19:32:23) g_log: purple_group_new: assertion `name != NULL' failed (19:32:23) g_log: purple_blist_add_group: assertion `group != NULL' failed (19:32:23) g_log: purple_find_group: assertion `(name != NULL) && (*name != '\0')' failed (19:32:23) g_log: purple_group_new: assertion `*name != '\0'' failed (19:32:23) g_log: purple_blist_add_group: assertion `group != NULL' failed Since I had to look it up, purple_blist_add_buddy replaces (group == NULL) with "Buddies".
author Paul Aurich <paul@darkrain42.org>
date Wed, 11 May 2011 01:58:03 +0000
parents 25e200cb3532
children 3caef255ad47
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /*
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
2 * purple - Jabber Protocol Plugin
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 *
28398
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28132
diff changeset
6 * source distribution.
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 * (at your option) any later version.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 * GNU General Public License for more details.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19455
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 #include "internal.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24 #include "debug.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 #include "server.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 #include "util.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 #include "buddy.h"
28506
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
29 #include "chat.h"
30905
ae615b3d3e47 First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <ml@update.uu.se>
parents: 29443
diff changeset
30 #include "google/google.h"
ae615b3d3e47 First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <ml@update.uu.se>
parents: 29443
diff changeset
31 #include "google/google_roster.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 #include "presence.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 #include "roster.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34 #include "iq.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 #include <string.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37
27575
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
38 /* Take a list of strings and join them with a ", " separator */
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
39 static gchar *roster_groups_join(GSList *list)
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
40 {
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
41 GString *out = g_string_new(NULL);
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
42 for ( ; list; list = list->next) {
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
43 out = g_string_append(out, (const char *)list->data);
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
44 if (list->next)
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
45 out = g_string_append(out, ", ");
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
46 }
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
47
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
48 return g_string_free(out, FALSE);
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
49 }
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
50
29142
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
51 static void roster_request_cb(JabberStream *js, const char *from,
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
52 JabberIqType type, const char *id,
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
53 xmlnode *packet, gpointer data)
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
54 {
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
55 xmlnode *query;
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
56
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
57 if (type == JABBER_IQ_ERROR) {
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
58 /*
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
59 * This shouldn't happen in any real circumstances and
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
60 * likely constitutes a server-side misconfiguration (i.e.
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
61 * explicitly not loading mod_roster...)
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
62 */
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
63 purple_debug_error("jabber", "Error retrieving roster!?\n");
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
64 jabber_stream_set_state(js, JABBER_STREAM_CONNECTED);
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
65 return;
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
66 }
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
67
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
68 query = xmlnode_get_child(packet, "query");
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
69 if (query == NULL) {
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
70 jabber_stream_set_state(js, JABBER_STREAM_CONNECTED);
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
71 return;
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
72 }
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
73
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
74 jabber_roster_parse(js, from, type, id, query);
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
75 jabber_stream_set_state(js, JABBER_STREAM_CONNECTED);
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
76 }
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
77
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78 void jabber_roster_request(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 JabberIq *iq;
29142
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
81 xmlnode *query;
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
82
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:roster");
29142
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
84 query = xmlnode_get_child(iq->node, "query");
29149
9ab75ab032b4 jabber: The google roster request code was so lonely, so let's just drop-kick it and add the little custom logic to roster.c
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
85
9ab75ab032b4 jabber: The google roster request code was so lonely, so let's just drop-kick it and add the little custom logic to roster.c
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
86 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) {
9ab75ab032b4 jabber: The google roster request code was so lonely, so let's just drop-kick it and add the little custom logic to roster.c
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
87 xmlnode_set_attrib(query, "xmlns:gr", NS_GOOGLE_ROSTER);
9ab75ab032b4 jabber: The google roster request code was so lonely, so let's just drop-kick it and add the little custom logic to roster.c
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
88 xmlnode_set_attrib(query, "gr:ext", "2");
9ab75ab032b4 jabber: The google roster request code was so lonely, so let's just drop-kick it and add the little custom logic to roster.c
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
89 }
9ab75ab032b4 jabber: The google roster request code was so lonely, so let's just drop-kick it and add the little custom logic to roster.c
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
90
29142
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
91 jabber_iq_set_callback(iq, roster_request_cb, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
95 static void remove_purple_buddies(JabberStream *js, const char *jid)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
97 GSList *buddies, *l;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
99 buddies = purple_find_buddies(js->gc->account, jid);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101 for(l = buddies; l; l = l->next)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
102 purple_blist_remove_buddy(l->data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 g_slist_free(buddies);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
107 static void add_purple_buddy_to_groups(JabberStream *js, const char *jid,
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 27581
diff changeset
108 const char *alias, GSList *groups)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 {
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
110 GSList *buddies, *l;
28809
05867b153f03 jabber: Remove the roster pool stuff.
Paul Aurich <paul@darkrain42.org>
parents: 28693
diff changeset
111 PurpleAccount *account = purple_connection_get_account(js->gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
113 buddies = purple_find_buddies(js->gc->account, jid);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115 if(!groups) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 if(!buddies)
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
117 groups = g_slist_append(groups, g_strdup(_("Buddies")));
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
118 else {
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
119 /* TODO: What should we do here? Removing the local buddies
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
120 * is wrong, but so is letting the group state get out of sync with
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
121 * the server.
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
122 */
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
123 g_slist_free(buddies);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124 return;
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
125 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 while(buddies) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
129 PurpleBuddy *b = buddies->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
130 PurpleGroup *g = purple_buddy_get_group(b);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
132 buddies = g_slist_delete_link(buddies, buddies);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
134 /* XMPP groups are case-sensitive, but libpurple groups are
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
135 * case-insensitive. We treat a buddy in both "Friends" and "friends"
27581
1638786071af Clarify a comment a little.
Paul Aurich <paul@darkrain42.org>
parents: 27580
diff changeset
136 * as only being in one group, but if we push changes about the buddy
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
137 * to the server, the buddy will be dropped from one of the groups.
27581
1638786071af Clarify a comment a little.
Paul Aurich <paul@darkrain42.org>
parents: 27580
diff changeset
138 * Not optimal, but better than the alternative, I think.
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
139 */
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
140 if((l = g_slist_find_custom(groups, purple_group_get_name(g), (GCompareFunc)purple_utf8_strcasecmp))) {
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
141 /* The buddy is already on the local list. Update info. */
25294
8aa7d8bcbc7d Alias foo. I think blist.h structs are now completely hidden.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24120
diff changeset
142 const char *servernick, *balias;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143
23932
5e51360bb22c The alias we retrieve from the roster is a private alias; use purple_serv_got_private_alias() to tell the core about it
Evan Schoenberg <evan.s@dreskin.net>
parents: 23705
diff changeset
144 /* Previously stored serverside / buddy-supplied alias */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
145 if((servernick = purple_blist_node_get_string((PurpleBlistNode*)b, "servernick")))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146 serv_got_alias(js->gc, jid, servernick);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147
23932
5e51360bb22c The alias we retrieve from the roster is a private alias; use purple_serv_got_private_alias() to tell the core about it
Evan Schoenberg <evan.s@dreskin.net>
parents: 23705
diff changeset
148 /* Alias from our roster retrieval */
25294
8aa7d8bcbc7d Alias foo. I think blist.h structs are now completely hidden.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24120
diff changeset
149 balias = purple_buddy_get_local_buddy_alias(b);
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
150 if(alias && !purple_strequal(alias, balias))
23932
5e51360bb22c The alias we retrieve from the roster is a private alias; use purple_serv_got_private_alias() to tell the core about it
Evan Schoenberg <evan.s@dreskin.net>
parents: 23705
diff changeset
151 purple_serv_got_private_alias(js->gc, jid, alias);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 g_free(l->data);
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
153 groups = g_slist_delete_link(groups, l);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
154 } else {
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
155 /* This buddy isn't in the group on the server anymore */
28809
05867b153f03 jabber: Remove the roster pool stuff.
Paul Aurich <paul@darkrain42.org>
parents: 28693
diff changeset
156 purple_debug_info("jabber", "jabber_roster_parse(): Removing %s "
05867b153f03 jabber: Remove the roster pool stuff.
Paul Aurich <paul@darkrain42.org>
parents: 28693
diff changeset
157 "from group '%s' on the local list\n",
05867b153f03 jabber: Remove the roster pool stuff.
Paul Aurich <paul@darkrain42.org>
parents: 28693
diff changeset
158 purple_buddy_get_name(b),
05867b153f03 jabber: Remove the roster pool stuff.
Paul Aurich <paul@darkrain42.org>
parents: 28693
diff changeset
159 purple_group_get_name(g));
05867b153f03 jabber: Remove the roster pool stuff.
Paul Aurich <paul@darkrain42.org>
parents: 28693
diff changeset
160 purple_blist_remove_buddy(b);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
163
27575
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
164 if (groups) {
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
165 char *tmp = roster_groups_join(groups);
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
166 purple_debug_info("jabber", "jabber_roster_parse(): Adding %s to "
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
167 "groups: %s\n", jid, tmp);
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
168 g_free(tmp);
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
169 }
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
170
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
171 while(groups) {
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
172 PurpleGroup *g = purple_find_group(groups->data);
28809
05867b153f03 jabber: Remove the roster pool stuff.
Paul Aurich <paul@darkrain42.org>
parents: 28693
diff changeset
173 PurpleBuddy *b = purple_buddy_new(account, jid, alias);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175 if(!g) {
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
176 g = purple_group_new(groups->data);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
177 purple_blist_add_group(g, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
180 purple_blist_add_buddy(b, NULL, g, NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
181 purple_blist_alias_buddy(b, alias);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
182
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
183 g_free(groups->data);
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
184 groups = g_slist_delete_link(groups, groups);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
185 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
186
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
187 g_slist_free(buddies);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
188 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
189
25933
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 24394
diff changeset
190 void jabber_roster_parse(JabberStream *js, const char *from,
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 24394
diff changeset
191 JabberIqType type, const char *id, xmlnode *query)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
192 {
25933
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 24394
diff changeset
193 xmlnode *item, *group;
29232
2f64bfb21c0d Disable this part of roster versioning, too (for now). Refs #10935.
Paul Aurich <paul@darkrain42.org>
parents: 29162
diff changeset
194 #if 0
29142
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
195 const char *ver;
29232
2f64bfb21c0d Disable this part of roster versioning, too (for now). Refs #10935.
Paul Aurich <paul@darkrain42.org>
parents: 29162
diff changeset
196 #endif
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197
27568
ff099a916d6b Use jabber_is_own_account and perform way fewer normalizations per iteration
Paul Aurich <paul@darkrain42.org>
parents: 27105
diff changeset
198 if (!jabber_is_own_account(js, from)) {
ff099a916d6b Use jabber_is_own_account and perform way fewer normalizations per iteration
Paul Aurich <paul@darkrain42.org>
parents: 27105
diff changeset
199 purple_debug_warning("jabber", "Received bogon roster push from %s\n",
ff099a916d6b Use jabber_is_own_account and perform way fewer normalizations per iteration
Paul Aurich <paul@darkrain42.org>
parents: 27105
diff changeset
200 from);
ff099a916d6b Use jabber_is_own_account and perform way fewer normalizations per iteration
Paul Aurich <paul@darkrain42.org>
parents: 27105
diff changeset
201 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
202 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
203
23705
9bf36aad8735 We talked about this and decided it was probably cleaner to not use
Mark Doliner <mark@kingant.net>
parents: 23691
diff changeset
204 js->currently_parsing_roster_push = TRUE;
23691
c31dfae66134 Hopefully fix the XMPP contact flipping/swapping between groups bug
Mark Doliner <mark@kingant.net>
parents: 23425
diff changeset
205
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
206 for(item = xmlnode_get_child(query, "item"); item; item = xmlnode_get_next_twin(item))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
207 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208 const char *jid, *name, *subscription, *ask;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
209 JabberBuddy *jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
211 subscription = xmlnode_get_attrib(item, "subscription");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
212 jid = xmlnode_get_attrib(item, "jid");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
213 name = xmlnode_get_attrib(item, "name");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214 ask = xmlnode_get_attrib(item, "ask");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
215
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
216 if(!jid)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
217 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
219 if(!(jb = jabber_buddy_find(js, jid, TRUE)))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
220 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
221
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
222 if(subscription) {
29160
7c543cbf52c0 jabber: Fix removing a self-contact.
Paul Aurich <paul@darkrain42.org>
parents: 29149
diff changeset
223 if (g_str_equal(subscription, "remove"))
7c543cbf52c0 jabber: Fix removing a self-contact.
Paul Aurich <paul@darkrain42.org>
parents: 29149
diff changeset
224 jb->subscription = JABBER_SUB_REMOVE;
7c543cbf52c0 jabber: Fix removing a self-contact.
Paul Aurich <paul@darkrain42.org>
parents: 29149
diff changeset
225 else if (jb == js->user_jb)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226 jb->subscription = JABBER_SUB_BOTH;
29160
7c543cbf52c0 jabber: Fix removing a self-contact.
Paul Aurich <paul@darkrain42.org>
parents: 29149
diff changeset
227 else if (g_str_equal(subscription, "none"))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228 jb->subscription = JABBER_SUB_NONE;
29160
7c543cbf52c0 jabber: Fix removing a self-contact.
Paul Aurich <paul@darkrain42.org>
parents: 29149
diff changeset
229 else if (g_str_equal(subscription, "to"))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230 jb->subscription = JABBER_SUB_TO;
29160
7c543cbf52c0 jabber: Fix removing a self-contact.
Paul Aurich <paul@darkrain42.org>
parents: 29149
diff changeset
231 else if (g_str_equal(subscription, "from"))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232 jb->subscription = JABBER_SUB_FROM;
29160
7c543cbf52c0 jabber: Fix removing a self-contact.
Paul Aurich <paul@darkrain42.org>
parents: 29149
diff changeset
233 else if (g_str_equal(subscription, "both"))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234 jb->subscription = JABBER_SUB_BOTH;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
235 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
236
27569
65b5bc543214 Remove this; it's been commented out for about 3.5 years.
Paul Aurich <paul@darkrain42.org>
parents: 27568
diff changeset
237 if(purple_strequal(ask, "subscribe"))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
238 jb->subscription |= JABBER_SUB_PENDING;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
239 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
240 jb->subscription &= ~JABBER_SUB_PENDING;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
241
28693
5c61429ea529 jabber: Fix removing a buddy with a pending subscription.
Paul Aurich <paul@darkrain42.org>
parents: 28659
diff changeset
242 if(jb->subscription & JABBER_SUB_REMOVE) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
243 remove_purple_buddies(js, jid);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
244 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
245 GSList *groups = NULL;
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
246
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
247 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
248 if (!jabber_google_roster_incoming(js, item))
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
249 continue;
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
250
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251 for(group = xmlnode_get_child(item, "group"); group; group = xmlnode_get_next_twin(group)) {
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
252 char *group_name = xmlnode_get_data(group);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
253
32040
06ed9020b784 jabber: Treat empty <group/> elements as "Buddies", not ""
Paul Aurich <paul@darkrain42.org>
parents: 30909
diff changeset
254 if (group_name == NULL || *group_name == '\0')
06ed9020b784 jabber: Treat empty <group/> elements as "Buddies", not ""
Paul Aurich <paul@darkrain42.org>
parents: 30909
diff changeset
255 /* Changing this string? Look in add_purple_buddy_to_groups */
06ed9020b784 jabber: Treat empty <group/> elements as "Buddies", not ""
Paul Aurich <paul@darkrain42.org>
parents: 30909
diff changeset
256 group_name = g_strdup(_("Buddies"));
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
257
29443
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
258 /*
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
259 * See the note in add_purple_buddy_to_groups; the core handles
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
260 * names case-insensitively and this is required to not
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
261 * end up with duplicates if a buddy is in, e.g.,
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
262 * 'XMPP' and 'xmpp'
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
263 */
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
264 if (g_slist_find_custom(groups, group_name, (GCompareFunc)purple_utf8_strcasecmp))
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
265 g_free(group_name);
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
266 else
d4b9df8e17f6 jabber: Fix another corner case that introduced duplicates to the list.
Paul Aurich <paul@darkrain42.org>
parents: 29427
diff changeset
267 groups = g_slist_prepend(groups, group_name);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
268 }
27570
93a41017dca9 Various roster cleanups. Refs #7008.
Paul Aurich <paul@darkrain42.org>
parents: 27569
diff changeset
269
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 27581
diff changeset
270 add_purple_buddy_to_groups(js, jid, name, groups);
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 27581
diff changeset
271 if (jb == js->user_jb)
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 27581
diff changeset
272 jabber_presence_fake_to_self(js, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
273 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274 }
18124
f88c2a41200d fix inital presence (fixes #1395)
Nathan Walp <nwalp@pidgin.im>
parents: 15823
diff changeset
275
29232
2f64bfb21c0d Disable this part of roster versioning, too (for now). Refs #10935.
Paul Aurich <paul@darkrain42.org>
parents: 29162
diff changeset
276 #if 0
29142
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
277 ver = xmlnode_get_attrib(query, "ver");
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
278 if (ver) {
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
279 PurpleAccount *account = purple_connection_get_account(js->gc);
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
280 purple_account_set_string(account, "roster_ver", ver);
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
281 }
29232
2f64bfb21c0d Disable this part of roster versioning, too (for now). Refs #10935.
Paul Aurich <paul@darkrain42.org>
parents: 29162
diff changeset
282 #endif
23691
c31dfae66134 Hopefully fix the XMPP contact flipping/swapping between groups bug
Mark Doliner <mark@kingant.net>
parents: 23425
diff changeset
283
29427
f7f14706618b jabber: Send the RFC-mandated ack IQ
Paul Aurich <paul@darkrain42.org>
parents: 29232
diff changeset
284 if (type == JABBER_IQ_SET) {
f7f14706618b jabber: Send the RFC-mandated ack IQ
Paul Aurich <paul@darkrain42.org>
parents: 29232
diff changeset
285 JabberIq *ack = jabber_iq_new(js, JABBER_IQ_RESULT);
f7f14706618b jabber: Send the RFC-mandated ack IQ
Paul Aurich <paul@darkrain42.org>
parents: 29232
diff changeset
286 jabber_iq_set_id(ack, id);
f7f14706618b jabber: Send the RFC-mandated ack IQ
Paul Aurich <paul@darkrain42.org>
parents: 29232
diff changeset
287 jabber_iq_send(ack);
f7f14706618b jabber: Send the RFC-mandated ack IQ
Paul Aurich <paul@darkrain42.org>
parents: 29232
diff changeset
288 }
f7f14706618b jabber: Send the RFC-mandated ack IQ
Paul Aurich <paul@darkrain42.org>
parents: 29232
diff changeset
289
29142
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28809
diff changeset
290 js->currently_parsing_roster_push = FALSE;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292
27576
b9da56683499 Operate on the passed-in GSList.
Paul Aurich <paul@darkrain42.org>
parents: 27575
diff changeset
293 /* jabber_roster_update frees the GSList* passed in */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
294 static void jabber_roster_update(JabberStream *js, const char *name,
27576
b9da56683499 Operate on the passed-in GSList.
Paul Aurich <paul@darkrain42.org>
parents: 27575
diff changeset
295 GSList *groups)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
296 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
297 PurpleBuddy *b;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
298 PurpleGroup *g;
27576
b9da56683499 Operate on the passed-in GSList.
Paul Aurich <paul@darkrain42.org>
parents: 27575
diff changeset
299 GSList *l;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
300 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
301 xmlnode *query, *item, *group;
25294
8aa7d8bcbc7d Alias foo. I think blist.h structs are now completely hidden.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24120
diff changeset
302 const char *balias;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303
23705
9bf36aad8735 We talked about this and decided it was probably cleaner to not use
Mark Doliner <mark@kingant.net>
parents: 23691
diff changeset
304 if (js->currently_parsing_roster_push)
23691
c31dfae66134 Hopefully fix the XMPP contact flipping/swapping between groups bug
Mark Doliner <mark@kingant.net>
parents: 23425
diff changeset
305 return;
c31dfae66134 Hopefully fix the XMPP contact flipping/swapping between groups bug
Mark Doliner <mark@kingant.net>
parents: 23425
diff changeset
306
20329
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
307 if(!(b = purple_find_buddy(js->gc->account, name)))
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
308 return;
24ce4fcce5b0 applied changes from e56db1b8a7bb8729e30fb3bf99a94ff7887fe4ec
Luke Schierer <lschiere@pidgin.im>
parents: 19680
diff changeset
309
27576
b9da56683499 Operate on the passed-in GSList.
Paul Aurich <paul@darkrain42.org>
parents: 27575
diff changeset
310 if (groups) {
27575
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
311 char *tmp = roster_groups_join(groups);
27093
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
312
27576
b9da56683499 Operate on the passed-in GSList.
Paul Aurich <paul@darkrain42.org>
parents: 27575
diff changeset
313 purple_debug_info("jabber", "jabber_roster_update(%s): [Source: "
b9da56683499 Operate on the passed-in GSList.
Paul Aurich <paul@darkrain42.org>
parents: 27575
diff changeset
314 "groups]: groups: %s\n", name, tmp);
27575
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
315 g_free(tmp);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
316 } else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
317 GSList *buddies = purple_find_buddies(js->gc->account, name);
27575
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
318 char *tmp;
27093
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
319
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
320 if(!buddies)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
321 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
322 while(buddies) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
323 b = buddies->data;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
324 g = purple_buddy_get_group(b);
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
325 groups = g_slist_append(groups, (char *)purple_group_get_name(g));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
326 buddies = g_slist_remove(buddies, b);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
327 }
27093
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
328
27575
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
329 tmp = roster_groups_join(groups);
27093
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
330 purple_debug_info("jabber", "jabber_roster_update(%s): [Source: local blist]: groups: %s\n",
27575
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
331 name, tmp);
efb40ca43589 Debug output when changing group memberships.
Paul Aurich <paul@darkrain42.org>
parents: 27574
diff changeset
332 g_free(tmp);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
333 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
334
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
335 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:roster");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
336
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
337 query = xmlnode_get_child(iq->node, "query");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
338 item = xmlnode_new_child(query, "item");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
340 xmlnode_set_attrib(item, "jid", name);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
341
25294
8aa7d8bcbc7d Alias foo. I think blist.h structs are now completely hidden.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24120
diff changeset
342 balias = purple_buddy_get_local_buddy_alias(b);
8aa7d8bcbc7d Alias foo. I think blist.h structs are now completely hidden.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24120
diff changeset
343 xmlnode_set_attrib(item, "name", balias ? balias : "");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
345 for(l = groups; l; l = l->next) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
346 group = xmlnode_new_child(item, "group");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
347 xmlnode_insert_data(group, l->data, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
348 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
349
27576
b9da56683499 Operate on the passed-in GSList.
Paul Aurich <paul@darkrain42.org>
parents: 27575
diff changeset
350 g_slist_free(groups);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25327
diff changeset
351
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
352 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
353 jabber_google_roster_outgoing(js, query, item);
29149
9ab75ab032b4 jabber: The google roster request code was so lonely, so let's just drop-kick it and add the little custom logic to roster.c
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
354 xmlnode_set_attrib(query, "xmlns:gr", NS_GOOGLE_ROSTER);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
355 xmlnode_set_attrib(query, "gr:ext", "2");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
356 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
357 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
358 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
359
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
360 void jabber_roster_add_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
361 PurpleGroup *group)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
362 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
363 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
364 char *who;
28506
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
365 JabberID *jid;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
366 JabberBuddy *jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
367 JabberBuddyResource *jbr;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
368 const char *name;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
369
27571
c8390dc125c1 Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents: 27570
diff changeset
370 /* If we haven't received the roster yet, ignore any adds */
c8390dc125c1 Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents: 27570
diff changeset
371 if (js->state != JABBER_STREAM_CONNECTED)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
372 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
373
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
374 name = purple_buddy_get_name(buddy);
28506
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
375 jid = jabber_id_new(name);
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
376 if (jid == NULL) {
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
377 /* TODO: Remove the buddy from the list? */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
378 return;
28506
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
379 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380
28506
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
381 /* Adding a chat room or a chat buddy to the roster is *not* supported. */
28659
c42d5c23a9e8 jabber: Don't crash when adding a buddy without a node (no '@'). Closes #10261.
Paul Aurich <paul@darkrain42.org>
parents: 28506
diff changeset
382 if (jid->node && jabber_chat_find(js, jid->node, jid->domain) != NULL) {
28506
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
383 /*
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
384 * This is the same thing Bonjour does. If it causes problems, move
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
385 * it to an idle callback.
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
386 */
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
387 purple_debug_warning("jabber", "Cowardly refusing to add a MUC user "
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
388 "to your buddy list and removing the buddy. "
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
389 "Buddies can only be added by real (non-MUC) "
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
390 "JID\n");
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
391 purple_blist_remove_buddy(buddy);
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
392 jabber_id_free(jid);
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
393 return;
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
394 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
395
28506
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
396 who = jabber_id_get_bare_jid(jid);
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
397 if (jid->resource != NULL) {
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
398 /*
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
399 * If the buddy name added contains a resource, strip that off and
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
400 * rename the buddy.
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
401 */
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
402 purple_blist_rename_buddy(buddy, who);
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
403 }
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
404
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
405 jb = jabber_buddy_find(js, who, FALSE);
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
406
2e3678cd33a0 jabber: Properly handle adding buddies that contain a resource. Closes #10151.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
407 purple_debug_info("jabber", "jabber_roster_add_buddy(): Adding %s\n", who);
27093
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
408
23425
a2f63b74fe31 Alright, I'm getting rid of this "groups" thing for the reason listed
Mark Doliner <mark@kingant.net>
parents: 22821
diff changeset
409 jabber_roster_update(js, who, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
410
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 27581
diff changeset
411 if (jb == js->user_jb) {
27573
9a5a9a4e7626 Simplify the fake_to_self function.
Paul Aurich <paul@darkrain42.org>
parents: 27571
diff changeset
412 jabber_presence_fake_to_self(js, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
413 } else if(!jb || !(jb->subscription & JABBER_SUB_TO)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
414 jabber_presence_subscription_set(js, who, "subscribe");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
415 } else if((jbr =jabber_buddy_find_resource(jb, NULL))) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
416 purple_prpl_got_user_status(gc->account, who,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
417 jabber_buddy_state_get_status_id(jbr->state),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
418 "priority", jbr->priority, jbr->status ? "message" : NULL, jbr->status, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
419 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
420
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
421 g_free(who);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
422 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
424 void jabber_roster_alias_change(PurpleConnection *gc, const char *name, const char *alias)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
426 PurpleBuddy *b = purple_find_buddy(gc->account, name);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428 if(b != NULL) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
429 purple_blist_alias_buddy(b, alias);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430
27093
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
431 purple_debug_info("jabber", "jabber_roster_alias_change(): Aliased %s to %s\n",
27105
7c864f388c96 Ladedah I dislike the need to explicitly check for NULL strings.
Paul Aurich <paul@darkrain42.org>
parents: 27093
diff changeset
432 name, alias ? alias : "(null)");
27092
a500f65bd077 Pluck Adium's roster debugging from 86720de21a854aa
Paul Aurich <paul@darkrain42.org>
parents: 26569
diff changeset
433
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 jabber_roster_update(gc->proto_data, name, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
435 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
436 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
437
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
438 void jabber_roster_group_change(PurpleConnection *gc, const char *name,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439 const char *old_group, const char *new_group)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
440 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441 GSList *buddies, *groups = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
442 PurpleBuddy *b;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
443 PurpleGroup *g;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
444 const char *gname;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
445
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
446 if(!old_group || !new_group || !strcmp(old_group, new_group))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
447 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
448
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
449 buddies = purple_find_buddies(gc->account, name);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
450 while(buddies) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
451 b = buddies->data;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
452 g = purple_buddy_get_group(b);
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
453 gname = purple_group_get_name(g);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
454 if(!strcmp(gname, old_group))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 groups = g_slist_append(groups, (char*)new_group); /* ick */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456 else
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
457 groups = g_slist_append(groups, (char*)gname);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
458 buddies = g_slist_remove(buddies, b);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 }
27092
a500f65bd077 Pluck Adium's roster debugging from 86720de21a854aa
Paul Aurich <paul@darkrain42.org>
parents: 26569
diff changeset
460
27093
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
461 purple_debug_info("jabber", "jabber_roster_group_change(): Moving %s from %s to %s\n",
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
462 name, old_group, new_group);
27092
a500f65bd077 Pluck Adium's roster debugging from 86720de21a854aa
Paul Aurich <paul@darkrain42.org>
parents: 26569
diff changeset
463
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
464 jabber_roster_update(gc->proto_data, name, groups);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
465 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
466
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
467 void jabber_roster_group_rename(PurpleConnection *gc, const char *old_name,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
468 PurpleGroup *group, GList *moved_buddies)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
469 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
470 GList *l;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
471 const char *gname = purple_group_get_name(group);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
472 for(l = moved_buddies; l; l = l->next) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
473 PurpleBuddy *buddy = l->data;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
474 jabber_roster_group_change(gc, purple_buddy_get_name(buddy), old_name, gname);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
475 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
476 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
477
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
478 void jabber_roster_remove_buddy(PurpleConnection *gc, PurpleBuddy *buddy,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
479 PurpleGroup *group) {
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
480 const char *name = purple_buddy_get_name(buddy);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
481 GSList *buddies = purple_find_buddies(purple_connection_get_account(gc), name);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
482
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
483 buddies = g_slist_remove(buddies, buddy);
15786
e926951e61fe Don't use g_list_length() and g_slist_length() when all you want to
Mark Doliner <mark@kingant.net>
parents: 15634
diff changeset
484 if(buddies != NULL) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
485 PurpleBuddy *tmpbuddy;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
486 PurpleGroup *tmpgroup;
20333
53afc5cce143 applied changes from d4b316d73ebaf93803ca2642e78b8821c3b5d5c7
Luke Schierer <lschiere@pidgin.im>
parents: 20329
diff changeset
487 GSList *groups = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
488
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
489 while(buddies) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
490 tmpbuddy = buddies->data;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15786
diff changeset
491 tmpgroup = purple_buddy_get_group(tmpbuddy);
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
492 groups = g_slist_append(groups, (char *)purple_group_get_name(tmpgroup));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
493 buddies = g_slist_remove(buddies, tmpbuddy);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
494 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
495
27093
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
496 purple_debug_info("jabber", "jabber_roster_remove_buddy(): Removing %s from %s\n",
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
497 purple_buddy_get_name(buddy), purple_group_get_name(group));
27092
a500f65bd077 Pluck Adium's roster debugging from 86720de21a854aa
Paul Aurich <paul@darkrain42.org>
parents: 26569
diff changeset
498
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
499 jabber_roster_update(gc->proto_data, name, groups);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
500 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
501 JabberIq *iq = jabber_iq_new_query(gc->proto_data, JABBER_IQ_SET,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
502 "jabber:iq:roster");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
503 xmlnode *query = xmlnode_get_child(iq->node, "query");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
504 xmlnode *item = xmlnode_new_child(query, "item");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
505
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23932
diff changeset
506 xmlnode_set_attrib(item, "jid", name);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
507 xmlnode_set_attrib(item, "subscription", "remove");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
508
27093
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
509 purple_debug_info("jabber", "jabber_roster_remove_buddy(): Removing %s\n",
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
510 purple_buddy_get_name(buddy));
f2ca52166a0d Add a few more roster debug messages and improve.
Paul Aurich <paul@darkrain42.org>
parents: 27092
diff changeset
511
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
512 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
513 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
514 }