libpurple/protocols/jabber/jabber.c

Mon, 06 Jul 2009 17:40:06 +0000

author
Marcus Lundblad <malu@pidgin.im>
date
Mon, 06 Jul 2009 17:40:06 +0000
branch
cpw.attention_ui
changeset 27645
7df1ab7605ba
parent 27635
0cd19038c417
parent 27428
6f84e66be7f3
child 27766
7c7acc54590e
permissions
-rw-r--r--

propagate from branch 'im.pidgin.pidgin' (head b03d1efa62e2af11d4398eb06b97c49a48ba4d7c)
to branch 'im.pidgin.cpw.attention_ui' (head 6f84e66be7f366a3e2244c675e39715a6d16cc65)

2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2 * purple - Jabber Protocol Plugin
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 *
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
4 * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * (at your option) any later version.
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
10 *
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * GNU General Public License for more details.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19341
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
21 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
22
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
23 #include "account.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
24 #include "accountopt.h"
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
25 #include "blist.h"
27286
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
26 #include "core.h"
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
27 #include "cmds.h"
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
28 #include "connection.h"
15952
c087855dc551 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15884
diff changeset
29 #include "conversation.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
30 #include "debug.h"
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
31 #include "dnssrv.h"
25477
ada9e5c4a10a Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <darkrain42@pidgin.im>
parents: 25328
diff changeset
32 #include "imgstore.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
33 #include "message.h"
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
34 #include "notify.h"
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents: 8591
diff changeset
35 #include "pluginpref.h"
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
36 #include "privacy.h"
14175
2bc5a80c5071 [gaim-migrate @ 16747]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
37 #include "proxy.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
38 #include "prpl.h"
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
39 #include "request.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
40 #include "server.h"
25532
10e7f850b235 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents: 25531
diff changeset
41 #include "status.h"
7095
17d2b54254f8 [gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents: 7072
diff changeset
42 #include "util.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9917
diff changeset
43 #include "version.h"
15952
c087855dc551 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15884
diff changeset
44 #include "xmlnode.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
45
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
46 #include "auth.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
47 #include "buddy.h"
26072
e8fce2b2b9fe propagate from branch 'im.pidgin.pidgin' (head b4bbfacd7f2050d87deeda12ea7bb3adc3608cb7)
Paul Aurich <darkrain42@pidgin.im>
parents: 26042 25804
diff changeset
48 #include "caps.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
49 #include "chat.h"
23626
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
50 #include "data.h"
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
51 #include "disco.h"
15265
a5b0ab58b05d [gaim-migrate @ 17993]
Sean Egan <seanegan@pidgin.im>
parents: 15237
diff changeset
52 #include "google.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
53 #include "iq.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
54 #include "jutil.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
55 #include "message.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
56 #include "parser.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
57 #include "presence.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
58 #include "jabber.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
59 #include "roster.h"
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
60 #include "ping.h"
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9414
diff changeset
61 #include "si.h"
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
62 #include "xdata.h"
17768
7be011945a1b added preliminary frame for pep-support
Andreas Monitzer <am@adiumx.com>
parents: 17767
diff changeset
63 #include "pep.h"
17817
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
64 #include "adhoccommands.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
65
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
66 #include "jingle/jingle.h"
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
67 #include "jingle/rtp.h"
23626
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
68
17813
c5cc8ebf62c0 Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <am@adiumx.com>
parents: 17810
diff changeset
69 #define JABBER_CONNECT_STEPS (js->gsc ? 9 : 5)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
70
27156
24858719952c Fix building on Windows and better integrate the new signals with the pre-existing ones.
Etan Reisner <deryni@pidgin.im>
parents: 27155
diff changeset
71 PurplePlugin *jabber_plugin = NULL;
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
72 GList *jabber_features = NULL;
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
73 GList *jabber_identities = NULL;
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
74 GSList *jabber_cmds = NULL;
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
75
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
76 static void jabber_unregister_account_cb(JabberStream *js);
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
77 static void try_srv_connect(JabberStream *js);
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
78
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
79 static void jabber_stream_init(JabberStream *js)
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
80 {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
81 char *open_stream;
3340
7e59a209931d [gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3337
diff changeset
82
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
83 open_stream = g_strdup_printf("<stream:stream to='%s' "
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
84 "xmlns='jabber:client' "
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
85 "xmlns:stream='http://etherx.jabber.org/streams' "
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
86 "version='1.0'>",
7291
3d8a237f36cb [gaim-migrate @ 7872]
Nathan Walp <nwalp@pidgin.im>
parents: 7274
diff changeset
87 js->user->domain);
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
88 /* setup the parser fresh for each stream */
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
89 jabber_parser_setup(js);
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
90 jabber_send_raw(js, open_stream, -1);
14062
dd8d7eb8fa76 [gaim-migrate @ 16585]
Ethan Blanton <elb@pidgin.im>
parents: 14043
diff changeset
91 js->reinit = FALSE;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
92 g_free(open_stream);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
94
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
95 static void
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
96 jabber_session_initialized_cb(JabberStream *js, const char *from,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
97 JabberIqType type, const char *id,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
98 xmlnode *packet, gpointer data)
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
99 {
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
100 if (type == JABBER_IQ_RESULT) {
25799
f2b56ff62042 Wait until receiving the roster to tell the core we're logged in
Paul Aurich <darkrain42@pidgin.im>
parents: 25798
diff changeset
101 jabber_disco_items_server(js);
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
102 if(js->unregistration)
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
103 jabber_unregister_account_cb(js);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
104 } else {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
105 purple_connection_error_reason(js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
106 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
107 ("Error initializing session"));
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
108 }
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
109 }
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
110
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
111 static void jabber_session_init(JabberStream *js)
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
112 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
113 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
114 xmlnode *session;
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
115
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
116 jabber_iq_set_callback(iq, jabber_session_initialized_cb, NULL);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
117
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
118 session = xmlnode_new_child(iq->node, "session");
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
119 xmlnode_set_namespace(session, "urn:ietf:params:xml:ns:xmpp-session");
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
120
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
121 jabber_iq_send(iq);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
122 }
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
123
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
124 static void jabber_bind_result_cb(JabberStream *js, const char *from,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
125 JabberIqType type, const char *id,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
126 xmlnode *packet, gpointer data)
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
127 {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
128 xmlnode *bind;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
129
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
130 if (type == JABBER_IQ_RESULT &&
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
131 (bind = xmlnode_get_child_with_namespace(packet, "bind", "urn:ietf:params:xml:ns:xmpp-bind"))) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
132 xmlnode *jid;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
133 char *full_jid;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
134 if((jid = xmlnode_get_child(bind, "jid")) && (full_jid = xmlnode_get_data(jid))) {
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
135 JabberBuddy *my_jb = NULL;
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
136 jabber_id_free(js->user);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
137 if(!(js->user = jabber_id_new(full_jid))) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
138 purple_connection_error_reason(js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
139 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
140 _("Invalid response from server"));
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
141 }
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
142 if((my_jb = jabber_buddy_find(js, full_jid, TRUE)))
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
143 my_jb->subscription |= JABBER_SUB_BOTH;
24430
77ba88ca54a6 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <datallah@pidgin.im>
parents: 24254
diff changeset
144
77ba88ca54a6 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <datallah@pidgin.im>
parents: 24254
diff changeset
145 purple_connection_set_display_name(js->gc, full_jid);
77ba88ca54a6 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <datallah@pidgin.im>
parents: 24254
diff changeset
146
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10490
diff changeset
147 g_free(full_jid);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
148 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
149 } else {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
150 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
151 char *msg = jabber_parse_error(js, packet, &reason);
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
152 purple_connection_error_reason(js->gc, reason, msg);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
153 g_free(msg);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
154 }
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
155
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
156 jabber_session_init(js);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
157 }
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
158
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
159 static char *jabber_prep_resource(char *input) {
25600
251e085b3cfa Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents: 25573
diff changeset
160 char hostname[256], /* current hostname */
251e085b3cfa Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents: 25573
diff changeset
161 *dot = NULL;
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
162
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
163 /* Empty resource == don't send any */
25304
75bdc442f70c Slightly modified version of a fix fqueze proposed for a crash with the empty
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 25290
diff changeset
164 if (input == NULL || *input == '\0')
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
165 return NULL;
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
166
24833
d2257d9b0ffa Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24828
diff changeset
167 if (strstr(input, "__HOSTNAME__") == NULL)
24850
0237007e4424 darkrain again
Ka-Hing Cheung <khc@pidgin.im>
parents: 24833
diff changeset
168 return g_strdup(input);
24833
d2257d9b0ffa Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24828
diff changeset
169
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
170 /* Replace __HOSTNAME__ with hostname */
24824
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
171 if (gethostname(hostname, sizeof(hostname) - 1)) {
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
172 purple_debug_warning("jabber", "gethostname: %s\n", g_strerror(errno));
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
173 /* according to glibc doc, the only time an error is returned
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
174 is if the hostname is longer than the buffer, in which case
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
175 glibc 2.2+ would still fill the buffer with partial
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
176 hostname, so maybe we want to detect that and use it
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
177 instead
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
178 */
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
179 strcpy(hostname, "localhost");
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
180 }
24824
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
181 hostname[sizeof(hostname) - 1] = '\0';
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
182
25600
251e085b3cfa Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents: 25573
diff changeset
183 /* We want only the short hostname, not the FQDN - this will prevent the
251e085b3cfa Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents: 25573
diff changeset
184 * resource string from being unreasonably long on systems which stuff the
251e085b3cfa Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents: 25573
diff changeset
185 * whole FQDN in the hostname */
251e085b3cfa Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents: 25573
diff changeset
186 if((dot = strchr(hostname, '.')))
251e085b3cfa Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents: 25573
diff changeset
187 dot = '\0';
251e085b3cfa Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents: 25573
diff changeset
188
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
189 return purple_strreplace(input, "__HOSTNAME__", hostname);
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
190 }
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
191
23618
8497c2f5e62d * using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23613
diff changeset
192 void jabber_stream_features_parse(JabberStream *js, xmlnode *packet)
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
193 {
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
194 if(xmlnode_get_child(packet, "starttls")) {
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
195 if(jabber_process_starttls(js, packet))
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
196
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
197 return;
26533
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
198 } else if(purple_account_get_bool(js->gc->account, "require_tls", FALSE) && !jabber_stream_is_ssl(js)) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
199 purple_connection_error_reason(js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
200 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
201 _("You require encryption, but it is not available on this server."));
17830
ae563ca41109 Added an option to require SSL or TLS when connecting to an XMPP server.
Andreas Monitzer <am@adiumx.com>
parents: 17828
diff changeset
202 return;
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
203 }
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
204
10988
c164f2e5dfaa [gaim-migrate @ 12825]
Nathan Walp <nwalp@pidgin.im>
parents: 10941
diff changeset
205 if(js->registration) {
c164f2e5dfaa [gaim-migrate @ 12825]
Nathan Walp <nwalp@pidgin.im>
parents: 10941
diff changeset
206 jabber_register_start(js);
c164f2e5dfaa [gaim-migrate @ 12825]
Nathan Walp <nwalp@pidgin.im>
parents: 10941
diff changeset
207 } else if(xmlnode_get_child(packet, "mechanisms")) {
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
208 jabber_auth_start(js, packet);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
209 } else if(xmlnode_get_child(packet, "bind")) {
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
210 xmlnode *bind, *resource;
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
211 char *requested_resource;
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
212 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
213 bind = xmlnode_new_child(iq->node, "bind");
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
214 xmlnode_set_namespace(bind, "urn:ietf:params:xml:ns:xmpp-bind");
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
215 requested_resource = jabber_prep_resource(js->user->resource);
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
216
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
217 if (requested_resource != NULL) {
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
218 resource = xmlnode_new_child(bind, "resource");
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
219 xmlnode_insert_data(resource, requested_resource, -1);
25087
b26db53e5b66 Use g_free instead of free.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24850
diff changeset
220 g_free(requested_resource);
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
221 }
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
222
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
223 jabber_iq_set_callback(iq, jabber_bind_result_cb, NULL);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
224
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
225 jabber_iq_send(iq);
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
226 } else /* if(xmlnode_get_child_with_namespace(packet, "auth")) */ {
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
227 /* If we get an empty stream:features packet, or we explicitly get
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
228 * an auth feature with namespace http://jabber.org/features/iq-auth
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
229 * we should revert back to iq:auth authentication, even though we're
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
230 * connecting to an XMPP server. */
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
231 js->auth_type = JABBER_AUTH_IQ_AUTH;
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
232 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
233 }
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
234 }
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
235
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
236 static void jabber_stream_handle_error(JabberStream *js, xmlnode *packet)
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
237 {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
238 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
239 char *msg = jabber_parse_error(js, packet, &reason);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
240
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
241 purple_connection_error_reason(js->gc, reason, msg);
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
242
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
243 g_free(msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
244 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
245
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
246 static void tls_init(JabberStream *js);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
247
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
248 void jabber_process_packet(JabberStream *js, xmlnode **packet)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
249 {
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
250 const char *xmlns;
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
251
27156
24858719952c Fix building on Windows and better integrate the new signals with the pre-existing ones.
Etan Reisner <deryni@pidgin.im>
parents: 27155
diff changeset
252 purple_signal_emit(jabber_plugin, "jabber-receiving-xmlnode", js->gc, packet);
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
253
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
254 /* if the signal leaves us with a null packet, we're done */
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
255 if(NULL == *packet)
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
256 return;
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
257
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
258 xmlns = xmlnode_get_namespace(*packet);
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
259
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
260 if(!strcmp((*packet)->name, "iq")) {
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
261 jabber_iq_parse(js, *packet);
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
262 } else if(!strcmp((*packet)->name, "presence")) {
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
263 jabber_presence_parse(js, *packet);
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
264 } else if(!strcmp((*packet)->name, "message")) {
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
265 jabber_message_parse(js, *packet);
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
266 } else if(!strcmp((*packet)->name, "stream:features")) {
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
267 jabber_stream_features_parse(js, *packet);
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
268 } else if (!strcmp((*packet)->name, "features") && xmlns &&
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
269 !strcmp(xmlns, "http://etherx.jabber.org/streams")) {
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
270 jabber_stream_features_parse(js, *packet);
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
271 } else if(!strcmp((*packet)->name, "stream:error") ||
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
272 (!strcmp((*packet)->name, "error") && xmlns &&
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
273 !strcmp(xmlns, "http://etherx.jabber.org/streams")))
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
274 {
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
275 jabber_stream_handle_error(js, *packet);
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
276 } else if(!strcmp((*packet)->name, "challenge")) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
277 if(js->state == JABBER_STREAM_AUTHENTICATING)
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
278 jabber_auth_handle_challenge(js, *packet);
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
279 } else if(!strcmp((*packet)->name, "success")) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
280 if(js->state == JABBER_STREAM_AUTHENTICATING)
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
281 jabber_auth_handle_success(js, *packet);
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
282 } else if(!strcmp((*packet)->name, "failure")) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
283 if(js->state == JABBER_STREAM_AUTHENTICATING)
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
284 jabber_auth_handle_failure(js, *packet);
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
285 } else if(!strcmp((*packet)->name, "proceed")) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
286 if(js->state == JABBER_STREAM_AUTHENTICATING && !js->gsc)
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
287 tls_init(js);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
288 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
289 purple_debug(PURPLE_DEBUG_WARNING, "jabber", "Unknown packet: %s\n",
17828
6957bf9d7330 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <am@adiumx.com>
parents: 17827
diff changeset
290 (*packet)->name);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
291 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
292 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
293
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
294 static int jabber_do_send(JabberStream *js, const char *data, int len)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
295 {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
296 int ret;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
297
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
298 if (js->gsc)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
299 ret = purple_ssl_write(js->gsc, data, len);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
300 else
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
301 ret = write(js->fd, data, len);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
302
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
303 return ret;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
304 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
305
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
306 static void jabber_send_cb(gpointer data, gint source, PurpleInputCondition cond)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
307 {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
308 JabberStream *js = data;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
309 int ret, writelen;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
310 writelen = purple_circ_buffer_get_max_read(js->write_buffer);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
311
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
312 if (writelen == 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
313 purple_input_remove(js->writeh);
13746
790924f38349 [gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents: 13546
diff changeset
314 js->writeh = 0;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
315 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
316 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
317
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
318 ret = jabber_do_send(js, js->write_buffer->outptr, writelen);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
319
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
320 if (ret < 0 && errno == EAGAIN)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
321 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
322 else if (ret <= 0) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
323 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
324 g_strerror(errno));
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
325 purple_connection_error_reason(js->gc,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
326 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
327 g_free(tmp);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
328 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
329 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
330
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
331 purple_circ_buffer_mark_read(js->write_buffer, ret);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
332 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
333
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
334 static gboolean do_jabber_send_raw(JabberStream *js, const char *data, int len)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
335 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
336 int ret;
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
337 gboolean success = TRUE;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
338
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
339 if (len == -1)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
340 len = strlen(data);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
341
13746
790924f38349 [gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents: 13546
diff changeset
342 if (js->writeh == 0)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
343 ret = jabber_do_send(js, data, len);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
344 else {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
345 ret = -1;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
346 errno = EAGAIN;
2814
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
347 }
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
348
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
349 if (ret < 0 && errno != EAGAIN) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
350 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
351 g_strerror(errno));
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
352 purple_connection_error_reason(js->gc,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
353 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
354 g_free(tmp);
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
355 success = FALSE;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
356 } else if (ret < len) {
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
357 if (ret < 0)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
358 ret = 0;
13746
790924f38349 [gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents: 13546
diff changeset
359 if (js->writeh == 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
360 js->writeh = purple_input_add(
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
361 js->gsc ? js->gsc->fd : js->fd,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
362 PURPLE_INPUT_WRITE, jabber_send_cb, js);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
363 purple_circ_buffer_append(js->write_buffer,
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
364 data + ret, len - ret);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
365 }
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
366
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
367 return success;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
368 }
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
369
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
370 void jabber_send_raw(JabberStream *js, const char *data, int len)
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
371 {
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
372
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
373 /* because printing a tab to debug every minute gets old */
25328
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
374 if(strcmp(data, "\t")) {
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
375 char *text = NULL, *last_part = NULL, *tag_start = NULL;
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
376
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
377 /* Because debug logs with plaintext passwords make me sad */
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
378 if(js->state != JABBER_STREAM_CONNECTED &&
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
379 /* Either <auth> or <query><password>... */
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
380 (((tag_start = strstr(data, "<auth ")) &&
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
381 strstr(data, "xmlns='urn:ietf:params:xml:ns:xmpp-sasl'")) ||
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
382 ((tag_start = strstr(data, "<query ")) &&
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
383 strstr(data, "xmlns='jabber:iq:auth'>") &&
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
384 (tag_start = strstr(tag_start, "<password>"))))) {
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
385 char *data_start, *tag_end = strchr(tag_start, '>');
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
386 text = g_strdup(data);
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
387
25739
a10f2ed69334 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25727
diff changeset
388 /* Better to print out some wacky debugging than crash
a10f2ed69334 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25727
diff changeset
389 * due to a plugin sending bad xml */
a10f2ed69334 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25727
diff changeset
390 if (tag_end == NULL)
a10f2ed69334 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25727
diff changeset
391 tag_end = tag_start;
a10f2ed69334 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25727
diff changeset
392
25328
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
393 data_start = text + (tag_end - data) + 1;
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
394
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
395 last_part = strchr(data_start, '<');
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
396 *data_start = '\0';
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
397 }
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
398
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
399 purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s%s%s\n",
26662
fe195346fe5b Specify SSL properly in debug messages for BOSH sending debug output
Paul Aurich <darkrain42@pidgin.im>
parents: 26660
diff changeset
400 jabber_stream_is_ssl(js) ? " (ssl)" : "", text ? text : data,
25328
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
401 last_part ? "password removed" : "",
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
402 last_part ? last_part : "");
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
403
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
404 g_free(text);
95d3adda6822 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents: 25304
diff changeset
405 }
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
406
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
407 /* If we've got a security layer, we need to encode the data,
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
408 * splitting it on the maximum buffer length negotiated */
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
409
27156
24858719952c Fix building on Windows and better integrate the new signals with the pre-existing ones.
Etan Reisner <deryni@pidgin.im>
parents: 27155
diff changeset
410 purple_signal_emit(jabber_plugin, "jabber-sending-text", js->gc, &data);
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
411 if (data == NULL)
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
412 return;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
413
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
414 #ifdef HAVE_CYRUS_SASL
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
415 if (js->sasl_maxbuf>0) {
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
416 int pos = 0;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
417
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
418 if (!js->gsc && js->fd<0)
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
419 return;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
420
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
421 if (len == -1)
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
422 len = strlen(data);
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
423
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
424 while (pos < len) {
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
425 int towrite;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
426 const char *out;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
427 unsigned olen;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
428
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
429 towrite = MIN((len - pos), js->sasl_maxbuf);
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
430
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
431 sasl_encode(js->sasl, &data[pos], towrite, &out, &olen);
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
432 pos += towrite;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
433
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
434 if (!do_jabber_send_raw(js, out, olen))
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
435 break;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
436 }
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
437 return;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
438 }
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
439 #endif
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
440
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
441 if (len == -1)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
442 len = strlen(data);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
443
24873
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
444 if (js->use_bosh)
26660
be0a41af4dde Pass all messages to BOSH as text, so they pass through the sending-text
Paul Aurich <darkrain42@pidgin.im>
parents: 26659
diff changeset
445 jabber_bosh_connection_send_raw(js->bosh, data);
24873
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
446 else
23955
18bd5d80fb7b explicit merge of '8d5884281cfb1c7a26fe80c919e38fa13f7a0c4b'
Paul Aurich <darkrain42@pidgin.im>
parents: 23619 23954
diff changeset
447 do_jabber_send_raw(js, data, len);
14604
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
448 }
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
449
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
450 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
14604
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
451 {
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
452 JabberStream *js = (JabberStream*)gc->proto_data;
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
453 jabber_send_raw(js, buf, len);
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
454 return len;
2814
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
455 }
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
456
27225
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
457 void jabber_send_signal_cb(PurpleConnection *pc, xmlnode **packet,
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
458 gpointer unused)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
459 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
460 char *txt;
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
461 int len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
462
27225
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
463 if (NULL == packet)
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
464 return;
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
465
27225
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
466 txt = xmlnode_to_str(*packet, &len);
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
467 jabber_send_raw(purple_connection_get_protocol_data(pc), txt, len);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
468 g_free(txt);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
469 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
470
27225
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
471 void jabber_send(JabberStream *js, xmlnode *packet)
21974
daa6296d122d Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@pidgin.im>
parents: 21929
diff changeset
472 {
27225
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
473 purple_signal_emit(jabber_plugin, "jabber-sending-xmlnode", js->gc, &packet);
21974
daa6296d122d Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@pidgin.im>
parents: 21929
diff changeset
474 }
daa6296d122d Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@pidgin.im>
parents: 21929
diff changeset
475
25555
dd0cb987435f Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <darkrain42@pidgin.im>
parents: 25552
diff changeset
476 static gboolean jabber_keepalive_timeout(PurpleConnection *gc)
21974
daa6296d122d Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@pidgin.im>
parents: 21929
diff changeset
477 {
22101
747c8ade85aa Masca noticed that 0d28b254d322fb0006034065870603672e5666d2 made jabber.c not
Will Thompson <resiak@pidgin.im>
parents: 22096
diff changeset
478 JabberStream *js = gc->proto_data;
21974
daa6296d122d Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@pidgin.im>
parents: 21929
diff changeset
479 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
480 _("Ping timed out"));
27304
b2dc447b8c0b The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents: 27293
diff changeset
481 js->keepalive_timeout = 0;
21974
daa6296d122d Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@pidgin.im>
parents: 21929
diff changeset
482 return FALSE;
daa6296d122d Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@pidgin.im>
parents: 21929
diff changeset
483 }
daa6296d122d Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@pidgin.im>
parents: 21929
diff changeset
484
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
485 void jabber_keepalive(PurpleConnection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
486 {
22096
0d28b254d322 Keep track of the keepalive timeout source so it can be removed when the account disconnects. This prevents a possible crash if the timeout fired after the account disconnected.
Evan Schoenberg <evands@pidgin.im>
parents: 22067
diff changeset
487 JabberStream *js = gc->proto_data;
21974
daa6296d122d Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@pidgin.im>
parents: 21929
diff changeset
488
27304
b2dc447b8c0b The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents: 27293
diff changeset
489 if (js->keepalive_timeout == 0) {
27143
977add4a215e Stop trying to be clever with XMPP keepalive pings.
Paul Aurich <darkrain42@pidgin.im>
parents: 27110
diff changeset
490 jabber_keepalive_ping(js);
25555
dd0cb987435f Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <darkrain42@pidgin.im>
parents: 25552
diff changeset
491 js->keepalive_timeout = purple_timeout_add_seconds(120,
dd0cb987435f Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <darkrain42@pidgin.im>
parents: 25552
diff changeset
492 (GSourceFunc)(jabber_keepalive_timeout), gc);
22587
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
493 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
494 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
495
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
496 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
497 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
498 PurpleInputCondition cond)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
499 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
500 PurpleConnection *gc = data;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
501 JabberStream *js = gc->proto_data;
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
502 int len;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
503 static char buf[4096];
6768
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
504
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 14004
diff changeset
505 /* TODO: It should be possible to make this check unnecessary */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
506 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
507 purple_ssl_close(gsc);
6768
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
508 return;
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
509 }
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
510
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
511 while((len = purple_ssl_read(gsc, buf, sizeof(buf) - 1)) > 0) {
22277
7c386db62c81 Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@pidgin.im>
parents: 22225
diff changeset
512 gc->last_received = time(NULL);
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
513 buf[len] = '\0';
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
514 purple_debug(PURPLE_DEBUG_INFO, "jabber", "Recv (ssl)(%d): %s\n", len, buf);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
515 jabber_parser_process(js, buf, len);
14062
dd8d7eb8fa76 [gaim-migrate @ 16585]
Ethan Blanton <elb@pidgin.im>
parents: 14043
diff changeset
516 if(js->reinit)
dd8d7eb8fa76 [gaim-migrate @ 16585]
Ethan Blanton <elb@pidgin.im>
parents: 14043
diff changeset
517 jabber_stream_init(js);
13280
8d45d67480e6 [gaim-migrate @ 15645]
Greg Hudson <ghudson@mit.edu>
parents: 13275
diff changeset
518 }
8d45d67480e6 [gaim-migrate @ 15645]
Greg Hudson <ghudson@mit.edu>
parents: 13275
diff changeset
519
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
520 if(len < 0 && errno == EAGAIN)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
521 return;
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
522 else {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
523 gchar *tmp;
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
524 if (len == 0)
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
525 tmp = g_strdup_printf(_("Server closed the connection"));
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
526 else
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
527 tmp = g_strdup_printf(_("Lost connection with server: %s"),
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
528 g_strerror(errno));
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
529 purple_connection_error_reason(js->gc,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
530 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
531 g_free(tmp);
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
532 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
533 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
534
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
535 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
536 jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
537 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
538 PurpleConnection *gc = data;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
539 JabberStream *js = gc->proto_data;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
540 int len;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
541 static char buf[4096];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
542
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
543 if(!PURPLE_CONNECTION_IS_VALID(gc))
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
544 return;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
545
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
546 if((len = read(js->fd, buf, sizeof(buf) - 1)) > 0) {
22277
7c386db62c81 Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@pidgin.im>
parents: 22225
diff changeset
547 gc->last_received = time(NULL);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
548 #ifdef HAVE_CYRUS_SASL
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
549 if (js->sasl_maxbuf>0) {
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
550 const char *out;
14697
518c0fae208e [gaim-migrate @ 17381]
Daniel Atallah <datallah@pidgin.im>
parents: 14668
diff changeset
551 unsigned int olen;
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
552 sasl_decode(js->sasl, buf, len, &out, &olen);
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
553 if (olen>0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
554 purple_debug(PURPLE_DEBUG_INFO, "jabber", "RecvSASL (%u): %s\n", olen, out);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
555 jabber_parser_process(js,out,olen);
14700
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
556 if(js->reinit)
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
557 jabber_stream_init(js);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
558 }
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
559 return;
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
560 }
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
561 #endif
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
562 buf[len] = '\0';
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
563 purple_debug(PURPLE_DEBUG_INFO, "jabber", "Recv (%d): %s\n", len, buf);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
564 jabber_parser_process(js, buf, len);
14700
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
565 if(js->reinit)
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
566 jabber_stream_init(js);
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
567 } else if(len < 0 && errno == EAGAIN) {
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
568 return;
7177
36ad58ff37d6 [gaim-migrate @ 7745]
Nathan Walp <nwalp@pidgin.im>
parents: 7147
diff changeset
569 } else {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
570 gchar *tmp;
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
571 if (len == 0)
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
572 tmp = g_strdup_printf(_("Server closed the connection"));
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
573 else
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
574 tmp = g_strdup_printf(_("Lost connection with server: %s"),
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
575 g_strerror(errno));
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
576 purple_connection_error_reason(js->gc,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
577 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
578 g_free(tmp);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
579 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
580 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
581
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
582 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
583 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
584 PurpleInputCondition cond)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
585 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
586 PurpleConnection *gc = data;
15023
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
587 JabberStream *js;
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
588
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
589 /* TODO: It should be possible to make this check unnecessary */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
590 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
591 purple_ssl_close(gsc);
15023
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
592 return;
19993
867bd1dfe680 Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <datallah@pidgin.im>
parents: 19920
diff changeset
593 }
15023
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
594
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
595 js = gc->proto_data;
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
596
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
597 if(js->state == JABBER_STREAM_CONNECTING)
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
598 jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
599 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
600 purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc);
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
601
17813
c5cc8ebf62c0 Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <am@adiumx.com>
parents: 17810
diff changeset
602 /* Tell the app that we're doing encryption */
c5cc8ebf62c0 Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <am@adiumx.com>
parents: 17810
diff changeset
603 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
604 }
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
605
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
606 static void
27605
b03b418413b0 A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <deryni@pidgin.im>
parents: 27603
diff changeset
607 txt_resolved_cb(GList *responses, gpointer data)
23607
bc82598d3798 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23604
diff changeset
608 {
24872
68de61b562f6 Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents: 24871
diff changeset
609 JabberStream *js = data;
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
610
24871
60f1695a34e8 Track the TXT query in the js object so it will be cancelleable
Paul Aurich <darkrain42@pidgin.im>
parents: 24870
diff changeset
611 js->srv_query_data = NULL;
60f1695a34e8 Track the TXT query in the js object so it will be cancelleable
Paul Aurich <darkrain42@pidgin.im>
parents: 24870
diff changeset
612
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
613 if (responses == NULL) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
614 purple_connection_error_reason(js->gc,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
615 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
616 _("Unable to find alternative XMPP connection "
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
617 "methods after failing to connect directly."));
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
618 return;
23607
bc82598d3798 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23604
diff changeset
619 }
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
620
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
621 while (responses) {
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
622 PurpleTxtResponse *resp = responses->data;
23608
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
623 gchar **token;
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
624 token = g_strsplit(purple_txt_response_get_content(resp), "=", 2);
23608
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
625 if (!strcmp(token[0], "_xmpp-client-xbosh")) {
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
626 purple_debug_info("jabber","Found alternative connection method using %s at %s.\n", token[0], token[1]);
24872
68de61b562f6 Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents: 24871
diff changeset
627 js->bosh = jabber_bosh_connection_init(js, token[1]);
24873
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
628 js->use_bosh = TRUE;
23608
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
629 g_strfreev(token);
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
630 break;
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
631 }
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
632 g_strfreev(token);
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
633 purple_txt_response_destroy(resp);
27605
b03b418413b0 A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <deryni@pidgin.im>
parents: 27603
diff changeset
634 responses = g_list_delete_link(responses, responses);
23607
bc82598d3798 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23604
diff changeset
635 }
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
636
24872
68de61b562f6 Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents: 24871
diff changeset
637 if (js->bosh) {
68de61b562f6 Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents: 24871
diff changeset
638 jabber_bosh_connection_connect(js->bosh);
23611
d811757e19b5 * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23608
diff changeset
639 } else {
d811757e19b5 * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23608
diff changeset
640 purple_debug_info("jabber","Didn't find an alternative connection method.\n");
d811757e19b5 * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23608
diff changeset
641 }
26765
fc156c427d59 First crack at Win32 TXT DNS query code and don't leak the PurpleTxtResponses
Paul Aurich <darkrain42@pidgin.im>
parents: 26764
diff changeset
642
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
643 if (responses) {
27605
b03b418413b0 A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <deryni@pidgin.im>
parents: 27603
diff changeset
644 g_list_foreach(responses, (GFunc)purple_txt_response_destroy, NULL);
b03b418413b0 A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <deryni@pidgin.im>
parents: 27603
diff changeset
645 g_list_free(responses);
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
646 }
23607
bc82598d3798 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23604
diff changeset
647 }
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
648
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
649 static void
14175
2bc5a80c5071 [gaim-migrate @ 16747]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
650 jabber_login_callback(gpointer data, gint source, const gchar *error)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
651 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
652 PurpleConnection *gc = data;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
653 JabberStream *js = gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
654
8783
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
655 if (source < 0) {
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
656 if (js->srv_rec != NULL) {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
657 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record.\n", error);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
658 try_srv_connect(js);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
659 } else {
23954
ca45bedce4a8 propagate from branch 'im.pidgin.pidgin' (head 918c72f0ff7f7e3c545d3baf6368ccbd2ba21427)
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23911 23608
diff changeset
660 purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain);
24872
68de61b562f6 Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents: 24871
diff changeset
661 js->srv_query_data = purple_txt_resolve("_xmppconnect", js->user->domain, txt_resolved_cb, js);
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
662 }
8783
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
663 return;
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
664 }
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
665
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
666 g_free(js->srv_rec);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
667 js->srv_rec = NULL;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
668
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
669 js->fd = source;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
670
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
671 if(js->state == JABBER_STREAM_CONNECTING)
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
672 jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
2300
06a3c10f4918 [gaim-migrate @ 2310]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2289
diff changeset
673
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
674 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
675 gc->inpa = purple_input_add(js->fd, PURPLE_INPUT_READ, jabber_recv_cb, gc);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
676 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
677
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
678 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
679 jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error,
7426
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
680 gpointer data)
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
681 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
682 PurpleConnection *gc = data;
15668
c8831ae23d4c If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evands@pidgin.im>
parents: 15558
diff changeset
683 JabberStream *js;
7426
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
684
15668
c8831ae23d4c If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evands@pidgin.im>
parents: 15558
diff changeset
685 /* If the connection is already disconnected, we don't need to do anything else */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
686 if(!PURPLE_CONNECTION_IS_VALID(gc))
15668
c8831ae23d4c If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evands@pidgin.im>
parents: 15558
diff changeset
687 return;
c8831ae23d4c If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evands@pidgin.im>
parents: 15558
diff changeset
688
c8831ae23d4c If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evands@pidgin.im>
parents: 15558
diff changeset
689 js = gc->proto_data;
14312
6ce4512aa9a8 [gaim-migrate @ 16932]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
690 js->gsc = NULL;
6ce4512aa9a8 [gaim-migrate @ 16932]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
691
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
692 purple_connection_ssl_error (gc, error);
7426
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
693 }
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
694
7427
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
695 static void tls_init(JabberStream *js)
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
696 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
697 purple_input_remove(js->gc->inpa);
7427
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
698 js->gc->inpa = 0;
18449
2d2df64f4303 applied changes from f9186fabb483b56a9d7e8fb7241b2520e9930413
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18235
diff changeset
699 js->gsc = purple_ssl_connect_with_host_fd(js->gc->account, js->fd,
22155
7c2034388bdb Now checking the hostname supplied by the user, or the host-part of the JID when no host name is given against the CN of the domain. This makes libpurple comply to the RFC. Fixes http://trac.adiumx.com/ticket/8787
Andreas Monitzer <am@adiumx.com>
parents: 22133
diff changeset
700 jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc);
7427
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
701 }
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
702
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
703 static gboolean jabber_login_connect(JabberStream *js, const char *domain, const char *host, int port,
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
704 gboolean fatal_failure)
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
705 {
22468
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
706 /* host should be used in preference to domain to
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
707 * allow SASL authentication to work with FQDN of the server,
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
708 * but we use domain as fallback for when users enter IP address
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
709 * in connect server */
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
710 g_free(js->serverFQDN);
22468
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
711 if (purple_ip_address_is_valid(host))
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
712 js->serverFQDN = g_strdup(domain);
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
713 else
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
714 js->serverFQDN = g_strdup(host);
15800
2d0ec4fe2681 pass the correct domain to cyrus sasl (sf patch 1663064)
Nathan Walp <nwalp@pidgin.im>
parents: 15783
diff changeset
715
17052
b064b8e0244b fix #699
Nathan Walp <nwalp@pidgin.im>
parents: 17008
diff changeset
716 if (purple_proxy_connect(js->gc, js->gc->account, host,
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
717 port, jabber_login_callback, js->gc) == NULL) {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
718 if (fatal_failure) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
719 purple_connection_error_reason(js->gc,
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
720 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
721 _("Unable to connect"));
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
722 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
723
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
724 return FALSE;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
725 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
726
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
727 return TRUE;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
728 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
729
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
730 static void try_srv_connect(JabberStream *js)
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
731 {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
732 while (js->srv_rec != NULL && js->srv_rec_idx < js->max_srv_rec_idx) {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
733 PurpleSrvResponse *tmp_resp = js->srv_rec + (js->srv_rec_idx++);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
734 if (jabber_login_connect(js, tmp_resp->hostname, tmp_resp->hostname, tmp_resp->port, FALSE))
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
735 return;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
736 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
737
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
738 g_free(js->srv_rec);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
739 js->srv_rec = NULL;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
740
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
741 /* Fall back to the defaults (I'm not sure if we should actually do this) */
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
742 jabber_login_connect(js, js->user->domain, js->user->domain,
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
743 purple_account_get_int(js->gc->account, "port", 5222), TRUE);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
744 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
745
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
746 static void srv_resolved_cb(PurpleSrvResponse *resp, int results, gpointer data)
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
747 {
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
748 JabberStream *js = data;
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
749 js->srv_query_data = NULL;
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
750
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
751 if(results) {
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
752 js->srv_rec = resp;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
753 js->srv_rec_idx = 0;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
754 js->max_srv_rec_idx = results;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
755 try_srv_connect(js);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
756 } else {
17052
b064b8e0244b fix #699
Nathan Walp <nwalp@pidgin.im>
parents: 17008
diff changeset
757 jabber_login_connect(js, js->user->domain, js->user->domain,
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
758 purple_account_get_int(js->gc->account, "port", 5222), TRUE);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
759 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
760 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
761
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
762 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
763 jabber_login(PurpleAccount *account)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
764 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
765 PurpleConnection *gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
766 const char *connect_server = purple_account_get_string(account,
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
767 "connect_server", "");
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
768 const char *bosh_url = purple_account_get_string(account,
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
769 "bosh_url", "");
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
770 JabberStream *js;
25532
10e7f850b235 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents: 25531
diff changeset
771 PurplePresence *presence;
25477
ada9e5c4a10a Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <darkrain42@pidgin.im>
parents: 25328
diff changeset
772 PurpleStoredImage *image;
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
773 JabberBuddy *my_jb = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
774
23626
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
775 gc->flags |= PURPLE_CONNECTION_HTML |
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
776 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
777 js = gc->proto_data = g_new0(JabberStream, 1);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
778 js->gc = gc;
8013
03f5b77cdaf0 [gaim-migrate @ 8693]
Olivier Blin <blino@users.sourceforge.net>
parents: 8011
diff changeset
779 js->fd = -1;
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
780 js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
781 g_free, g_free);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
782 js->buddies = g_hash_table_new_full(g_str_hash, g_str_equal,
7116
86c328e44c15 [gaim-migrate @ 7683]
Nathan Walp <nwalp@pidgin.im>
parents: 7095
diff changeset
783 g_free, (GDestroyNotify)jabber_buddy_free);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
784 js->chats = g_hash_table_new_full(g_str_hash, g_str_equal,
8396
8681756b4769 [gaim-migrate @ 9125]
Nathan Walp <nwalp@pidgin.im>
parents: 8362
diff changeset
785 g_free, (GDestroyNotify)jabber_chat_free);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
786 js->user = jabber_id_new(purple_account_get_username(account));
7322
de15a9314c04 [gaim-migrate @ 7908]
Nathan Walp <nwalp@pidgin.im>
parents: 7310
diff changeset
787 js->next_id = g_random_int();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
788 js->write_buffer = purple_circ_buffer_new(512);
22111
7b7ed5e93969 Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22101
diff changeset
789 js->old_length = 0;
27304
b2dc447b8c0b The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents: 27293
diff changeset
790 js->keepalive_timeout = 0;
26080
bfe333bf2ae8 Jabber: Default protocol version to 1.0.
Paul Aurich <darkrain42@pidgin.im>
parents: 26074
diff changeset
791 /* Set the default protocol version to 1.0. Overridden in parser.c. */
bfe333bf2ae8 Jabber: Default protocol version to 1.0.
Paul Aurich <darkrain42@pidgin.im>
parents: 26074
diff changeset
792 js->protocol_version = JABBER_PROTO_1_0;
23698
0815965bd80b Moved jingle.c global variable "sessions" into JabberStream.
Michael Ruprecht <maiku@pidgin.im>
parents: 23697
diff changeset
793 js->sessions = NULL;
26286
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
794 js->stun_ip = NULL;
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
795 js->stun_port = 0;
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
796 js->stun_query = NULL;
5613
df1602bc1e05 [gaim-migrate @ 6019]
Nathan Walp <nwalp@pidgin.im>
parents: 5599
diff changeset
797
25531
b348ceba3289 Set idle time on JabberStream when logging in
Marcus Lundblad <malu@pidgin.im>
parents: 25497
diff changeset
798 /* if we are idle, set idle-ness on the stream (this could happen if we get
b348ceba3289 Set idle time on JabberStream when logging in
Marcus Lundblad <malu@pidgin.im>
parents: 25497
diff changeset
799 disconnected and the reconnects while being idle. I don't think it makes
b348ceba3289 Set idle time on JabberStream when logging in
Marcus Lundblad <malu@pidgin.im>
parents: 25497
diff changeset
800 sense to do this when registering a new account... */
25532
10e7f850b235 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents: 25531
diff changeset
801 presence = purple_account_get_presence(account);
10e7f850b235 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents: 25531
diff changeset
802 if (purple_presence_is_idle(presence))
10e7f850b235 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents: 25531
diff changeset
803 js->idle = purple_presence_get_idle_time(presence);
5613
df1602bc1e05 [gaim-migrate @ 6019]
Nathan Walp <nwalp@pidgin.im>
parents: 5599
diff changeset
804
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
805 if(!js->user) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
806 purple_connection_error_reason(gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
807 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
808 _("Invalid XMPP ID"));
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
809 return;
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
810 }
26286
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
811
17008
502623177086 Handle people forgetting to enter a domain. Also, change 'server,' in the account options to 'domain,' which is its proper name, and hopefully less confusion
Sean Egan <seanegan@pidgin.im>
parents: 17007
diff changeset
812 if (!js->user->domain || *(js->user->domain) == '\0') {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
813 purple_connection_error_reason(gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
814 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
815 _("Invalid XMPP ID. Domain must be set."));
17008
502623177086 Handle people forgetting to enter a domain. Also, change 'server,' in the account options to 'domain,' which is its proper name, and hopefully less confusion
Sean Egan <seanegan@pidgin.im>
parents: 17007
diff changeset
816 return;
502623177086 Handle people forgetting to enter a domain. Also, change 'server,' in the account options to 'domain,' which is its proper name, and hopefully less confusion
Sean Egan <seanegan@pidgin.im>
parents: 17007
diff changeset
817 }
26286
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
818
25811
57012229a242 Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <darkrain42@pidgin.im>
parents: 25808
diff changeset
819 /*
57012229a242 Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <darkrain42@pidgin.im>
parents: 25808
diff changeset
820 * Calculate the avatar hash for our current image so we know (when we
57012229a242 Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <darkrain42@pidgin.im>
parents: 25808
diff changeset
821 * fetch our vCard and PEP avatar) if we should send our avatar to the
57012229a242 Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <darkrain42@pidgin.im>
parents: 25808
diff changeset
822 * server.
57012229a242 Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <darkrain42@pidgin.im>
parents: 25808
diff changeset
823 */
25477
ada9e5c4a10a Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <darkrain42@pidgin.im>
parents: 25328
diff changeset
824 if ((image = purple_buddy_icons_find_account_icon(account))) {
25811
57012229a242 Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <darkrain42@pidgin.im>
parents: 25808
diff changeset
825 js->initial_avatar_hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(image),
25477
ada9e5c4a10a Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <darkrain42@pidgin.im>
parents: 25328
diff changeset
826 purple_imgstore_get_size(image));
ada9e5c4a10a Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <darkrain42@pidgin.im>
parents: 25328
diff changeset
827 purple_imgstore_unref(image);
ada9e5c4a10a Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <darkrain42@pidgin.im>
parents: 25328
diff changeset
828 }
ada9e5c4a10a Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <darkrain42@pidgin.im>
parents: 25328
diff changeset
829
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
830 if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE)))
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
831 my_jb->subscription |= JABBER_SUB_BOTH;
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
832
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
833 jabber_stream_set_state(js, JABBER_STREAM_CONNECTING);
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
834
25803
04c2dbd49ac2 Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <darkrain42@pidgin.im>
parents: 25802
diff changeset
835 /* TODO: Just use purple_url_parse? */
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
836 /* If both BOSH and a Connect Server are specified, we prefer BOSH. I'm not
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
837 * attached to that choice, though.
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
838 */
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
839 if (*bosh_url) {
25803
04c2dbd49ac2 Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <darkrain42@pidgin.im>
parents: 25802
diff changeset
840 js->use_bosh = TRUE;
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
841 js->bosh = jabber_bosh_connection_init(js, bosh_url);
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
842 if (js->bosh)
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
843 jabber_bosh_connection_connect(js->bosh);
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
844 else {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
845 purple_connection_error_reason(js->gc,
25803
04c2dbd49ac2 Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <darkrain42@pidgin.im>
parents: 25802
diff changeset
846 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
847 _("Malformed BOSH URL"));
25803
04c2dbd49ac2 Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <darkrain42@pidgin.im>
parents: 25802
diff changeset
848 }
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
849
24870
98e6bafdf33f Add option for forcing BOSH (useful for debugging)
Paul Aurich <darkrain42@pidgin.im>
parents: 24868
diff changeset
850 return;
98e6bafdf33f Add option for forcing BOSH (useful for debugging)
Paul Aurich <darkrain42@pidgin.im>
parents: 24868
diff changeset
851 }
98e6bafdf33f Add option for forcing BOSH (useful for debugging)
Paul Aurich <darkrain42@pidgin.im>
parents: 24868
diff changeset
852
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
853 js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain);
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
854
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
855 /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
856 if(purple_account_get_bool(js->gc->account, "old_ssl", FALSE)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
857 if(purple_ssl_is_supported()) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
858 js->gsc = purple_ssl_connect(js->gc->account,
22155
7c2034388bdb Now checking the hostname supplied by the user, or the host-part of the JID when no host name is given against the CN of the domain. This makes libpurple comply to the RFC. Fixes http://trac.adiumx.com/ticket/8787
Andreas Monitzer <am@adiumx.com>
parents: 22133
diff changeset
859 js->certificate_CN,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
860 purple_account_get_int(account, "port", 5223), jabber_login_callback_ssl,
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
861 jabber_ssl_connect_failure, js->gc);
25804
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
862 if (!js->gsc) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
863 purple_connection_error_reason(js->gc,
25804
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
864 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
865 _("Unable to establish SSL connection"));
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
866 }
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
867 } else {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
868 purple_connection_error_reason(js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
869 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
870 _("SSL support unavailable"));
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
871 }
25804
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
872
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
873 return;
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
874 }
3770
5d476318f306 [gaim-migrate @ 3909]
Sean Egan <seanegan@pidgin.im>
parents: 3769
diff changeset
875
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
876 /* no old-ssl, so if they've specified a connect server, we'll use that, otherwise we'll
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
877 * invoke the magic of SRV lookups, to figure out host and port */
26072
e8fce2b2b9fe propagate from branch 'im.pidgin.pidgin' (head b4bbfacd7f2050d87deeda12ea7bb3adc3608cb7)
Paul Aurich <darkrain42@pidgin.im>
parents: 26042 25804
diff changeset
878 if(connect_server[0]) {
25804
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
879 jabber_login_connect(js, js->user->domain, connect_server, purple_account_get_int(account, "port", 5222), TRUE);
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
880 } else {
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
881 js->srv_query_data = purple_srv_resolve("xmpp-client",
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
882 "tcp", js->user->domain, srv_resolved_cb, js);
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
883 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
884 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
885
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
886
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
887 static gboolean
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
888 conn_close_cb(gpointer data)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
889 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
890 JabberStream *js = data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
891 PurpleAccount *account = purple_connection_get_account(js->gc);
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
892
17810
c8d4297080cb Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents: 17806
diff changeset
893 jabber_parser_free(js);
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
894
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
895 purple_account_disconnect(account);
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
896
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
897 return FALSE;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
898 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
899
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
900 static void
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
901 jabber_connection_schedule_close(JabberStream *js)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
902 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
903 purple_timeout_add(0, conn_close_cb, js);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
904 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
905
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
906 static void
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
907 jabber_registration_result_cb(JabberStream *js, const char *from,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
908 JabberIqType type, const char *id,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
909 xmlnode *packet, gpointer data)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
910 {
17814
c47c22006b0d Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17813
diff changeset
911 PurpleAccount *account = purple_connection_get_account(js->gc);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
912 char *buf;
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
913 char *to = data;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
914
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
915 if (type == JABBER_IQ_RESULT) {
17814
c47c22006b0d Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17813
diff changeset
916 if(js->registration) {
27525
579b9d64b364 A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27397
diff changeset
917 buf = g_strdup_printf(_("Registration of %s@%s successful"),
27587
fac3003790f2 Indentation fix.
Etan Reisner <deryni@pidgin.im>
parents: 27304
diff changeset
918 js->user->node, js->user->domain);
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
919 if(account->registration_cb)
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
920 (account->registration_cb)(account, TRUE, account->registration_cb_user_data);
25604
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
921 } else {
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
922 g_return_if_fail(to != NULL);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
923 buf = g_strdup_printf(_("Registration to %s successful"),
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
924 to);
25604
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
925 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
926 purple_notify_info(NULL, _("Registration Successful"),
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
927 _("Registration Successful"), buf);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
928 g_free(buf);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
929 } else {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
930 char *msg = jabber_parse_error(js, packet, NULL);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
931
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
932 if(!msg)
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
933 msg = g_strdup(_("Unknown Error"));
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
934
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
935 purple_notify_error(NULL, _("Registration Failed"),
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
936 _("Registration Failed"), msg);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
937 g_free(msg);
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
938 if(account->registration_cb)
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
939 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
940 }
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
941 g_free(to);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
942 if(js->registration)
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
943 jabber_connection_schedule_close(js);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
944 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
945
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
946 static void
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
947 jabber_unregistration_result_cb(JabberStream *js, const char *from,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
948 JabberIqType type, const char *id,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
949 xmlnode *packet, gpointer data)
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
950 {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
951 char *buf;
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
952 char *to = data;
25604
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
953
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
954 /* This function is never called for unregistering our XMPP account from
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
955 * the server, so there should always be a 'to' address. */
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
956 g_return_if_fail(to != NULL);
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
957
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
958 if (type == JABBER_IQ_RESULT) {
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
959 buf = g_strdup_printf(_("Registration from %s successfully removed"),
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
960 to);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
961 purple_notify_info(NULL, _("Unregistration Successful"),
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
962 _("Unregistration Successful"), buf);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
963 g_free(buf);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
964 } else {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
965 char *msg = jabber_parse_error(js, packet, NULL);
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
966
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
967 if(!msg)
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
968 msg = g_strdup(_("Unknown Error"));
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
969
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
970 purple_notify_error(NULL, _("Unregistration Failed"),
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
971 _("Unregistration Failed"), msg);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
972 g_free(msg);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
973 }
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
974 g_free(to);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
975 }
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
976
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
977 typedef struct _JabberRegisterCBData {
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
978 JabberStream *js;
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
979 char *who;
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
980 } JabberRegisterCBData;
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
981
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
982 static void
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
983 jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
984 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
985 GList *groups, *flds;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
986 xmlnode *query, *y;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
987 JabberIq *iq;
7264
bdb42afa3565 [gaim-migrate @ 7841]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
988 char *username;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
989
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
990 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register");
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
991 query = xmlnode_get_child(iq->node, "query");
25604
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
992 if (cbdata->who)
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
993 xmlnode_set_attrib(iq->node, "to", cbdata->who);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
994
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
995 for(groups = purple_request_fields_get_groups(fields); groups;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
996 groups = groups->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
997 for(flds = purple_request_field_group_get_fields(groups->data);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
998 flds; flds = flds->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
999 PurpleRequestField *field = flds->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1000 const char *id = purple_request_field_get_id(field);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1001 if(!strcmp(id,"unregister")) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1002 gboolean value = purple_request_field_bool_get_value(field);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1003 if(value) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1004 /* unregister from service. this doesn't include any of the fields, so remove them from the stanza by recreating it
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1005 (there's no "remove child" function for xmlnode) */
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1006 jabber_iq_free(iq);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1007 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register");
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1008 query = xmlnode_get_child(iq->node, "query");
25604
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
1009 if (cbdata->who)
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
1010 xmlnode_set_attrib(iq->node,"to",cbdata->who);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1011 xmlnode_new_child(query, "remove");
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1012
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1013 jabber_iq_set_callback(iq, jabber_unregistration_result_cb, cbdata->who);
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1014
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1015 jabber_iq_send(iq);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1016 g_free(cbdata);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1017 return;
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1018 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1019 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1020 const char *value = purple_request_field_string_get_value(field);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1021
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1022 if(!strcmp(id, "username")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1023 y = xmlnode_new_child(query, "username");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1024 } else if(!strcmp(id, "password")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1025 y = xmlnode_new_child(query, "password");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1026 } else if(!strcmp(id, "name")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1027 y = xmlnode_new_child(query, "name");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1028 } else if(!strcmp(id, "email")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1029 y = xmlnode_new_child(query, "email");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1030 } else if(!strcmp(id, "nick")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1031 y = xmlnode_new_child(query, "nick");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1032 } else if(!strcmp(id, "first")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1033 y = xmlnode_new_child(query, "first");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1034 } else if(!strcmp(id, "last")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1035 y = xmlnode_new_child(query, "last");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1036 } else if(!strcmp(id, "address")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1037 y = xmlnode_new_child(query, "address");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1038 } else if(!strcmp(id, "city")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1039 y = xmlnode_new_child(query, "city");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1040 } else if(!strcmp(id, "state")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1041 y = xmlnode_new_child(query, "state");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1042 } else if(!strcmp(id, "zip")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1043 y = xmlnode_new_child(query, "zip");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1044 } else if(!strcmp(id, "phone")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1045 y = xmlnode_new_child(query, "phone");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1046 } else if(!strcmp(id, "url")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1047 y = xmlnode_new_child(query, "url");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1048 } else if(!strcmp(id, "date")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1049 y = xmlnode_new_child(query, "date");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1050 } else {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1051 continue;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1052 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1053 xmlnode_insert_data(y, value, -1);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1054 if(cbdata->js->registration && !strcmp(id, "username")) {
25604
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
1055 g_free(cbdata->js->user->node);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1056 cbdata->js->user->node = g_strdup(value);
7264
bdb42afa3565 [gaim-migrate @ 7841]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
1057 }
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1058 if(cbdata->js->registration && !strcmp(id, "password"))
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1059 purple_account_set_password(cbdata->js->gc->account, value);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1060 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1061 }
19897
8b5abbdebc87 merge of 'b0586b3697e8044ccd62a369b0c0f9125b2ef732'
Daniel Atallah <datallah@pidgin.im>
parents: 19895 19859
diff changeset
1062 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1063
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1064 if(cbdata->js->registration) {
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1065 username = g_strdup_printf("%s@%s/%s", cbdata->js->user->node, cbdata->js->user->domain,
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1066 cbdata->js->user->resource);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1067 purple_account_set_username(cbdata->js->gc->account, username);
21668
3698b848759b The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evands@pidgin.im>
parents: 21667
diff changeset
1068 g_free(username);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1069 }
7264
bdb42afa3565 [gaim-migrate @ 7841]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
1070
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1071 jabber_iq_set_callback(iq, jabber_registration_result_cb, cbdata->who);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1073 jabber_iq_send(iq);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1074 g_free(cbdata);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1075 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1076
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1077 static void
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1078 jabber_register_cancel_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1079 {
17814
c47c22006b0d Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17813
diff changeset
1080 PurpleAccount *account = purple_connection_get_account(cbdata->js->gc);
19894
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 19389
diff changeset
1081 if(account && cbdata->js->registration) {
17814
c47c22006b0d Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17813
diff changeset
1082 if(account->registration_cb)
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
1083 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1084 jabber_connection_schedule_close(cbdata->js);
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1085 }
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1086 g_free(cbdata->who);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1087 g_free(cbdata);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1088 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1089
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1090 static void jabber_register_x_data_cb(JabberStream *js, xmlnode *result, gpointer data)
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1091 {
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1092 xmlnode *query;
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1093 JabberIq *iq;
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1094 char *to = data;
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1095
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1096 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register");
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1097 query = xmlnode_get_child(iq->node, "query");
25604
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
1098 if (to)
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
1099 xmlnode_set_attrib(iq->node,"to",to);
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1100
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1101 xmlnode_insert_child(query, result);
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1102
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1103 jabber_iq_set_callback(iq, jabber_registration_result_cb, to);
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1104 jabber_iq_send(iq);
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1105 }
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1106
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1107 static const struct {
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1108 const char *name;
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1109 const char *label;
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1110 } registration_fields[] = {
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1111 { "email", N_("Email") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1112 { "nick", N_("Nickname") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1113 { "first", N_("First name") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1114 { "last", N_("Last name") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1115 { "address", N_("Address") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1116 { "city", N_("City") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1117 { "state", N_("State") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1118 { "zip", N_("Postal code") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1119 { "phone", N_("Phone") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1120 { "url", N_("URL") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1121 { "date", N_("Date") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1122 { NULL, NULL }
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1123 };
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1124
25817
09d6a40a341d Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents: 25814
diff changeset
1125 void jabber_register_parse(JabberStream *js, const char *from, JabberIqType type,
09d6a40a341d Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents: 25814
diff changeset
1126 const char *id, xmlnode *query)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1127 {
17814
c47c22006b0d Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17813
diff changeset
1128 PurpleAccount *account = purple_connection_get_account(js->gc);
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1129 PurpleRequestFields *fields;
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1130 PurpleRequestFieldGroup *group;
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1131 PurpleRequestField *field;
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1132 xmlnode *x, *y, *node;
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1133 char *instructions;
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1134 JabberRegisterCBData *cbdata;
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1135 gboolean registered = FALSE;
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1136 int i;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1137
25817
09d6a40a341d Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents: 25814
diff changeset
1138 if (type != JABBER_IQ_RESULT)
14356
7f4abf922cfa [gaim-migrate @ 16984]
Nathan Walp <nwalp@pidgin.im>
parents: 14324
diff changeset
1139 return;
7f4abf922cfa [gaim-migrate @ 16984]
Nathan Walp <nwalp@pidgin.im>
parents: 14324
diff changeset
1140
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1141 if(js->registration) {
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1142 /* get rid of the login thingy */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1143 purple_connection_set_state(js->gc, PURPLE_CONNECTED);
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1144 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1145
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1146 if(xmlnode_get_child(query, "registered")) {
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1147 registered = TRUE;
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1148
17814
c47c22006b0d Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17813
diff changeset
1149 if(js->registration) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1150 purple_notify_error(NULL, _("Already Registered"),
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1151 _("Already Registered"), NULL);
17814
c47c22006b0d Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17813
diff changeset
1152 if(account->registration_cb)
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
1153 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1154 jabber_connection_schedule_close(js);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1155 return;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1156 }
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1157 }
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1158
25573
6937721bb0a1 The jabber_register_parse function was looking for the <x> node as a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25552
diff changeset
1159 if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) {
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1160 jabber_x_data_request(js, x, jabber_register_x_data_cb, g_strdup(from));
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1161 return;
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1162
25573
6937721bb0a1 The jabber_register_parse function was looking for the <x> node as a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25552
diff changeset
1163 } else if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:oob"))) {
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1164 xmlnode *url;
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1165
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1166 if((url = xmlnode_get_child(x, "url"))) {
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1167 char *href;
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1168 if((href = xmlnode_get_data(url))) {
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1169 purple_notify_uri(NULL, href);
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1170 g_free(href);
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1171
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1172 if(js->registration) {
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1173 js->gc->wants_to_die = TRUE;
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1174 if(account->registration_cb) /* succeeded, but we have no login info */
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1175 (account->registration_cb)(account, TRUE, account->registration_cb_user_data);
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1176 jabber_connection_schedule_close(js);
8398
dccdcef78405 [gaim-migrate @ 9127]
Nathan Walp <nwalp@pidgin.im>
parents: 8396
diff changeset
1177 }
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1178 return;
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1179 }
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1180 }
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1181 }
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1182
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1183 /* as a last resort, use the old jabber:iq:register syntax */
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1184
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1185 fields = purple_request_fields_new();
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1186 group = purple_request_field_group_new(NULL);
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1187 purple_request_fields_add_group(fields, group);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1188
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1189 if((node = xmlnode_get_child(query, "username"))) {
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1190 char *data = xmlnode_get_data(node);
26583
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1191 if(js->registration)
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1192 field = purple_request_field_string_new("username", _("Username"), data ? data : js->user->node, FALSE);
26583
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1193 else
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1194 field = purple_request_field_string_new("username", _("Username"), data, FALSE);
26583
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1195
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1196 purple_request_field_group_add_field(group, field);
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1197 g_free(data);
26583
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1198 }
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1199 if((node = xmlnode_get_child(query, "password"))) {
26583
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1200 if(js->registration)
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1201 field = purple_request_field_string_new("password", _("Password"),
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1202 purple_connection_get_password(js->gc), FALSE);
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1203 else {
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1204 char *data = xmlnode_get_data(node);
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1205 field = purple_request_field_string_new("password", _("Password"), data, FALSE);
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1206 g_free(data);
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1207 }
26583
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1208
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1209 purple_request_field_string_set_masked(field, TRUE);
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1210 purple_request_field_group_add_field(group, field);
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1211 }
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1212
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1213 if((node = xmlnode_get_child(query, "name"))) {
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1214 if(js->registration)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1215 field = purple_request_field_string_new("name", _("Name"),
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1216 purple_account_get_alias(js->gc->account), FALSE);
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1217 else {
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1218 char *data = xmlnode_get_data(node);
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1219 field = purple_request_field_string_new("name", _("Name"), data, FALSE);
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1220 g_free(data);
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1221 }
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1222 purple_request_field_group_add_field(group, field);
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1223 }
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1224
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1225 for (i = 0; registration_fields[i].name != NULL; ++i) {
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1226 if ((node = xmlnode_get_child(query, registration_fields[i].name))) {
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1227 char *data = xmlnode_get_data(node);
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1228 field = purple_request_field_string_new(registration_fields[i].name,
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1229 _(registration_fields[i].label),
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1230 data, FALSE);
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1231 purple_request_field_group_add_field(group, field);
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1232 g_free(data);
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1233 }
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1234 }
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1235
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1236 if(registered) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1237 field = purple_request_field_bool_new("unregister", _("Unregister"), FALSE);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1238 purple_request_field_group_add_field(group, field);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1239 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1240
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1241 if((y = xmlnode_get_child(query, "instructions")))
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1242 instructions = xmlnode_get_data(y);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1243 else if(registered)
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1244 instructions = g_strdup(_("Please fill out the information below "
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1245 "to change your account registration."));
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1246 else
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1247 instructions = g_strdup(_("Please fill out the information below "
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1248 "to register your new account."));
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1249
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1250 cbdata = g_new0(JabberRegisterCBData, 1);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1251 cbdata->js = js;
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1252 cbdata->who = g_strdup(from);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1253
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1254 if(js->registration)
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1255 purple_request_fields(js->gc, _("Register New XMPP Account"),
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16847
diff changeset
1256 _("Register New XMPP Account"), instructions, fields,
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1257 _("Register"), G_CALLBACK(jabber_register_cb),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16302
diff changeset
1258 _("Cancel"), G_CALLBACK(jabber_register_cancel_cb),
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16302
diff changeset
1259 purple_connection_get_account(js->gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1260 cbdata);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1261 else {
25604
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
1262 char *title;
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
1263 g_return_if_fail(from != NULL);
c963986ac373 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents: 25600
diff changeset
1264 title = registered ? g_strdup_printf(_("Change Account Registration at %s"), from)
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1265 :g_strdup_printf(_("Register New Account at %s"), from);
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1266 purple_request_fields(js->gc, title,
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1267 title, instructions, fields,
21492
5f6d249bb601 Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evands@pidgin.im>
parents: 21453
diff changeset
1268 (registered ? _("Change Registration") : _("Register")), G_CALLBACK(jabber_register_cb),
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1269 _("Cancel"), G_CALLBACK(jabber_register_cancel_cb),
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1270 purple_connection_get_account(js->gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1271 cbdata);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1272 g_free(title);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1273 }
14140
fcb570e0b2db [gaim-migrate @ 16699]
Daniel Atallah <datallah@pidgin.im>
parents: 14115
diff changeset
1274
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1275 g_free(instructions);
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1276 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1277
8016
d75a4e86f7c3 [gaim-migrate @ 8696]
Nathan Walp <nwalp@pidgin.im>
parents: 8013
diff changeset
1278 void jabber_register_start(JabberStream *js)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1279 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1280 JabberIq *iq;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1281
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1282 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1283 jabber_iq_send(iq);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1284 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1285
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1286 void jabber_register_gateway(JabberStream *js, const char *gateway) {
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1287 JabberIq *iq;
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1288
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1289 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1290 xmlnode_set_attrib(iq->node, "to", gateway);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1291 jabber_iq_send(iq);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1292 }
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1293
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
1294 void jabber_register_account(PurpleAccount *account)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1295 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1296 PurpleConnection *gc = purple_account_get_connection(account);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1297 JabberStream *js;
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
1298 JabberBuddy *my_jb = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1299 const char *connect_server = purple_account_get_string(account,
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1300 "connect_server", "");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1301 const char *server;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1302
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1303 js = gc->proto_data = g_new0(JabberStream, 1);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1304 js->gc = gc;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1305 js->registration = TRUE;
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1306 js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1307 g_free, g_free);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1308 js->user = jabber_id_new(purple_account_get_username(account));
7322
de15a9314c04 [gaim-migrate @ 7908]
Nathan Walp <nwalp@pidgin.im>
parents: 7310
diff changeset
1309 js->next_id = g_random_int();
22111
7b7ed5e93969 Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22101
diff changeset
1310 js->old_length = 0;
27304
b2dc447b8c0b The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents: 27293
diff changeset
1311 js->keepalive_timeout = 0;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1312
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1313 if(!js->user) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
1314 purple_connection_error_reason(gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
1315 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
1316 _("Invalid XMPP ID"));
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1317 return;
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1318 }
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1319
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1320 js->write_buffer = purple_circ_buffer_new(512);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
1321
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1322 if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE)))
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
1323 my_jb->subscription |= JABBER_SUB_BOTH;
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
1324
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1325 server = connect_server[0] ? connect_server : js->user->domain;
22155
7c2034388bdb Now checking the hostname supplied by the user, or the host-part of the JID when no host name is given against the CN of the domain. This makes libpurple comply to the RFC. Fixes http://trac.adiumx.com/ticket/8787
Andreas Monitzer <am@adiumx.com>
parents: 22133
diff changeset
1326 js->certificate_CN = g_strdup(server);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1327
26286
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1328 js->stun_ip = NULL;
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1329 js->stun_port = 0;
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1330 js->stun_query = NULL;
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1331
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1332 jabber_stream_set_state(js, JABBER_STREAM_CONNECTING);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1333
26773
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1334 /* TODO: Just use purple_url_parse? */
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1335 if (!g_ascii_strncasecmp(connect_server, "http://", 7) || !g_ascii_strncasecmp(connect_server, "https://", 8)) {
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1336 js->use_bosh = TRUE;
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1337 js->bosh = jabber_bosh_connection_init(js, connect_server);
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1338 if (!js->bosh) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
1339 purple_connection_error_reason(js->gc,
26773
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1340 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1341 _("Malformed BOSH Connect Server"));
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1342 return;
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1343 }
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1344 jabber_bosh_connection_connect(js->bosh);
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1345 return;
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1346 } else {
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1347 js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain);
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1348 }
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1349
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1350 if(purple_account_get_bool(account, "old_ssl", FALSE)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1351 if(purple_ssl_is_supported()) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1352 js->gsc = purple_ssl_connect(account, server,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1353 purple_account_get_int(account, "port", 5222),
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
1354 jabber_login_callback_ssl, jabber_ssl_connect_failure, gc);
26773
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1355 if (!js->gsc) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
1356 purple_connection_error_reason(js->gc,
26773
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1357 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1358 _("Unable to establish SSL connection"));
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1359 }
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
1360 } else {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
1361 purple_connection_error_reason(gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
1362 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
1363 _("SSL support unavailable"));
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
1364 }
26773
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1365
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1366 return;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1367 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1368
26773
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1369 if (connect_server[0]) {
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1370 jabber_login_connect(js, js->user->domain, server,
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1371 purple_account_get_int(account,
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1372 "port", 5222), TRUE);
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1373 } else {
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1374 js->srv_query_data = purple_srv_resolve("xmpp-client",
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1375 "tcp",
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1376 js->user->domain,
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1377 srv_resolved_cb,
fe9ff7aeb8a8 Support BOSH when connecting via the register_account prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 26766
diff changeset
1378 js);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1379 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1380 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1381
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1382 static void
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1383 jabber_unregister_account_iq_cb(JabberStream *js, const char *from,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1384 JabberIqType type, const char *id,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1385 xmlnode *packet, gpointer data)
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1386 {
18994
310e9d853e2b Implemented a callback for unregistering, mirroring the registration callback. Since this is a new API, I can do it properly by passing it right in the unregister function call, instead of having a separate function for setting it.
Andreas Monitzer <am@adiumx.com>
parents: 18993
diff changeset
1387 PurpleAccount *account = purple_connection_get_account(js->gc);
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1388
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1389 if (type == JABBER_IQ_ERROR) {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1390 char *msg = jabber_parse_error(js, packet, NULL);
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1391
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1392 purple_notify_error(js->gc, _("Error unregistering account"),
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1393 _("Error unregistering account"), msg);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1394 g_free(msg);
18994
310e9d853e2b Implemented a callback for unregistering, mirroring the registration callback. Since this is a new API, I can do it properly by passing it right in the unregister function call, instead of having a separate function for setting it.
Andreas Monitzer <am@adiumx.com>
parents: 18993
diff changeset
1395 if(js->unregistration_cb)
18995
6ba7743720cb Mixed up TRUE and FALSE.
Andreas Monitzer <am@adiumx.com>
parents: 18994
diff changeset
1396 js->unregistration_cb(account, FALSE, js->unregistration_user_data);
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1397 } else {
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1398 purple_notify_info(js->gc, _("Account successfully unregistered"),
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1399 _("Account successfully unregistered"), NULL);
18994
310e9d853e2b Implemented a callback for unregistering, mirroring the registration callback. Since this is a new API, I can do it properly by passing it right in the unregister function call, instead of having a separate function for setting it.
Andreas Monitzer <am@adiumx.com>
parents: 18993
diff changeset
1400 if(js->unregistration_cb)
18995
6ba7743720cb Mixed up TRUE and FALSE.
Andreas Monitzer <am@adiumx.com>
parents: 18994
diff changeset
1401 js->unregistration_cb(account, TRUE, js->unregistration_user_data);
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1402 }
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1403 }
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1404
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1405 static void jabber_unregister_account_cb(JabberStream *js) {
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1406 JabberIq *iq;
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1407 xmlnode *query;
19994
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1408
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1409 g_return_if_fail(js->unregistration);
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1410
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1411 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register");
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1412
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1413 query = xmlnode_get_child_with_namespace(iq->node, "query", "jabber:iq:register");
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1414
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1415 xmlnode_new_child(query, "remove");
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1416 xmlnode_set_attrib(iq->node, "to", js->user->domain);
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1417
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1418 jabber_iq_set_callback(iq, jabber_unregister_account_iq_cb, NULL);
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1419 jabber_iq_send(iq);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1420 }
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1421
18994
310e9d853e2b Implemented a callback for unregistering, mirroring the registration callback. Since this is a new API, I can do it properly by passing it right in the unregister function call, instead of having a separate function for setting it.
Andreas Monitzer <am@adiumx.com>
parents: 18993
diff changeset
1422 void jabber_unregister_account(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data) {
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1423 PurpleConnection *gc = purple_account_get_connection(account);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1424 JabberStream *js;
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1425
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1426 if(gc->state != PURPLE_CONNECTED) {
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1427 if(gc->state != PURPLE_CONNECTING)
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1428 jabber_login(account);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1429 js = gc->proto_data;
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1430 js->unregistration = TRUE;
18994
310e9d853e2b Implemented a callback for unregistering, mirroring the registration callback. Since this is a new API, I can do it properly by passing it right in the unregister function call, instead of having a separate function for setting it.
Andreas Monitzer <am@adiumx.com>
parents: 18993
diff changeset
1431 js->unregistration_cb = cb;
310e9d853e2b Implemented a callback for unregistering, mirroring the registration callback. Since this is a new API, I can do it properly by passing it right in the unregister function call, instead of having a separate function for setting it.
Andreas Monitzer <am@adiumx.com>
parents: 18993
diff changeset
1432 js->unregistration_user_data = user_data;
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1433 return;
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1434 }
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1435
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1436 js = gc->proto_data;
19994
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1437
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1438 if (js->unregistration) {
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1439 purple_debug_error("jabber", "Unregistration in process; ignoring duplicate request.\n");
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1440 return;
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1441 }
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1442
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1443 js->unregistration = TRUE;
18994
310e9d853e2b Implemented a callback for unregistering, mirroring the registration callback. Since this is a new API, I can do it properly by passing it right in the unregister function call, instead of having a separate function for setting it.
Andreas Monitzer <am@adiumx.com>
parents: 18993
diff changeset
1444 js->unregistration_cb = cb;
310e9d853e2b Implemented a callback for unregistering, mirroring the registration callback. Since this is a new API, I can do it properly by passing it right in the unregister function call, instead of having a separate function for setting it.
Andreas Monitzer <am@adiumx.com>
parents: 18993
diff changeset
1445 js->unregistration_user_data = user_data;
19994
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1446
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1447 jabber_unregister_account_cb(js);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1448 }
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1449
25727
1440163769e6 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25726
diff changeset
1450 /* TODO: As Will pointed out in IRC, after being notified by the core to
1440163769e6 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25726
diff changeset
1451 * shutdown, we should async. wait for the server to send us the stream
1440163769e6 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25726
diff changeset
1452 * termination before destorying everything. That seems like it would require
1440163769e6 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25726
diff changeset
1453 * changing the semantics of prpl->close(), so it's a good idea for 3.0.0.
1440163769e6 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25726
diff changeset
1454 */
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
1455 void jabber_close(PurpleConnection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1456 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1457 JabberStream *js = gc->proto_data;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1458
23717
5a7e463b226d Further decoupled Jingle code from jabber.c:
Michael Ruprecht <maiku@pidgin.im>
parents: 23716
diff changeset
1459 /* Close all of the open Jingle sessions on this stream */
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
1460 jingle_terminate_sessions(js);
23697
299bafcd8eb8 Updates voice and video to use Farsight 2, gets XMPP voice conferences
Michael Ruprecht <maiku@pidgin.im>
parents: 23696
diff changeset
1461
14004
ce5ce35df50b [gaim-migrate @ 16478]
Sean Egan <seanegan@pidgin.im>
parents: 14003
diff changeset
1462 /* Don't perform any actions on the ssl connection
ce5ce35df50b [gaim-migrate @ 16478]
Sean Egan <seanegan@pidgin.im>
parents: 14003
diff changeset
1463 * if we were forcibly disconnected because it will crash
ce5ce35df50b [gaim-migrate @ 16478]
Sean Egan <seanegan@pidgin.im>
parents: 14003
diff changeset
1464 * on some SSL backends.
13154
1a93fddf2a9a [gaim-migrate @ 15516]
Evan Schoenberg <evands@pidgin.im>
parents: 13051
diff changeset
1465 */
24873
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1466 if (!gc->disconnect_timeout) {
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1467 if (js->use_bosh)
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1468 jabber_bosh_connection_close(js->bosh);
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1469 else
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1470 jabber_send_raw(js, "</stream:stream>", -1);
26860
9dbb983c97d6 Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <darkrain42@pidgin.im>
parents: 26859
diff changeset
1471 }
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
1472
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
1473 if (js->srv_query_data)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1474 purple_srv_cancel(js->srv_query_data);
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
1475
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1476 if(js->gsc) {
13243
5a127fc7db90 [gaim-migrate @ 15608]
Evan Schoenberg <evands@pidgin.im>
parents: 13238
diff changeset
1477 #ifdef HAVE_OPENSSL
5a127fc7db90 [gaim-migrate @ 15608]
Evan Schoenberg <evands@pidgin.im>
parents: 13238
diff changeset
1478 if (!gc->disconnect_timeout)
13385
6fb64ae23761 [gaim-migrate @ 15757]
Nathan Walp <nwalp@pidgin.im>
parents: 13297
diff changeset
1479 #endif
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1480 purple_ssl_close(js->gsc);
8360
2976b7f18935 [gaim-migrate @ 9084]
Nathan Walp <nwalp@pidgin.im>
parents: 8312
diff changeset
1481 } else if (js->fd > 0) {
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1482 if(js->gc->inpa)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1483 purple_input_remove(js->gc->inpa);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1484 close(js->fd);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1485 }
15363
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 15344
diff changeset
1486
24873
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1487 if (js->bosh)
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1488 jabber_bosh_connection_destroy(js->bosh);
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1489
15363
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 15344
diff changeset
1490 jabber_buddy_remove_all_pending_buddy_info_requests(js);
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 15344
diff changeset
1491
17810
c8d4297080cb Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents: 17806
diff changeset
1492 jabber_parser_free(js);
c8d4297080cb Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents: 17806
diff changeset
1493
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1494 if(js->iq_callbacks)
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1495 g_hash_table_destroy(js->iq_callbacks);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1496 if(js->buddies)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1497 g_hash_table_destroy(js->buddies);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1498 if(js->chats)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1499 g_hash_table_destroy(js->chats);
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1500
8043
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1501 while(js->chat_servers) {
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1502 g_free(js->chat_servers->data);
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1503 js->chat_servers = g_list_delete_link(js->chat_servers, js->chat_servers);
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1504 }
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1505
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1506 while(js->user_directories) {
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1507 g_free(js->user_directories->data);
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1508 js->user_directories = g_list_delete_link(js->user_directories, js->user_directories);
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1509 }
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1510
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1511 while(js->bs_proxies) {
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1512 JabberBytestreamsStreamhost *sh = js->bs_proxies->data;
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1513 g_free(sh->jid);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1514 g_free(sh->host);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1515 g_free(sh->zeroconf);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1516 g_free(sh);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1517 js->bs_proxies = g_list_delete_link(js->bs_proxies, js->bs_proxies);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1518 }
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1519
24012
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1520 while(js->url_datas) {
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1521 purple_util_fetch_url_cancel(js->url_datas->data);
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1522 js->url_datas = g_slist_delete_link(js->url_datas, js->url_datas);
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1523 }
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1524
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1525 g_free(js->stream_id);
7587
57f1a8a3542d [gaim-migrate @ 8205]
Nathan Walp <nwalp@pidgin.im>
parents: 7514
diff changeset
1526 if(js->user)
57f1a8a3542d [gaim-migrate @ 8205]
Nathan Walp <nwalp@pidgin.im>
parents: 7514
diff changeset
1527 jabber_id_free(js->user);
25811
57012229a242 Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <darkrain42@pidgin.im>
parents: 25808
diff changeset
1528 g_free(js->initial_avatar_hash);
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1529 g_free(js->avatar_hash);
24716
047f5075ca58 Entity Capabilities must be per-JabberStream
Paul Aurich <darkrain42@pidgin.im>
parents: 24715
diff changeset
1530 g_free(js->caps_hash);
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1531
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1532 purple_circ_buffer_destroy(js->write_buffer);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
1533 if(js->writeh)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1534 purple_input_remove(js->writeh);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1535 #ifdef HAVE_CYRUS_SASL
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1536 if(js->sasl)
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1537 sasl_dispose(&js->sasl);
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1538 if(js->sasl_mechs)
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1539 g_string_free(js->sasl_mechs, TRUE);
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1540 g_free(js->sasl_cb);
18449
2d2df64f4303 applied changes from f9186fabb483b56a9d7e8fb7241b2520e9930413
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18235
diff changeset
1541 #endif
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1542 g_free(js->serverFQDN);
17817
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
1543 while(js->commands) {
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
1544 JabberAdHocCommands *cmd = js->commands->data;
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
1545 g_free(cmd->jid);
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
1546 g_free(cmd->node);
17827
33575af6da8b Fixed copy/paste error.
Andreas Monitzer <am@adiumx.com>
parents: 17824
diff changeset
1547 g_free(cmd->name);
17817
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
1548 g_free(cmd);
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
1549 js->commands = g_list_delete_link(js->commands, js->commands);
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
1550 }
15198
08deb9b51708 [gaim-migrate @ 17922]
Sean Egan <seanegan@pidgin.im>
parents: 15185
diff changeset
1551 g_free(js->server_name);
22155
7c2034388bdb Now checking the hostname supplied by the user, or the host-part of the JID when no host name is given against the CN of the domain. This makes libpurple comply to the RFC. Fixes http://trac.adiumx.com/ticket/8787
Andreas Monitzer <am@adiumx.com>
parents: 22133
diff changeset
1552 g_free(js->certificate_CN);
15225
d04a059065dd [gaim-migrate @ 17949]
Sean Egan <seanegan@pidgin.im>
parents: 15205
diff changeset
1553 g_free(js->gmail_last_time);
d04a059065dd [gaim-migrate @ 17949]
Sean Egan <seanegan@pidgin.im>
parents: 15205
diff changeset
1554 g_free(js->gmail_last_tid);
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1555 g_free(js->old_msg);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1556 g_free(js->old_avatarhash);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1557 g_free(js->old_artist);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1558 g_free(js->old_title);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1559 g_free(js->old_source);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1560 g_free(js->old_uri);
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1561 g_free(js->old_track);
23097
fd61a293d5e1 patch from Andrew Gaul to fix another memleak
Ka-Hing Cheung <khc@pidgin.im>
parents: 22759
diff changeset
1562 g_free(js->expected_rspauth);
21688
a16385b34219 Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <datallah@pidgin.im>
parents: 21668
diff changeset
1563
27304
b2dc447b8c0b The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents: 27293
diff changeset
1564 if (js->keepalive_timeout != 0)
22096
0d28b254d322 Keep track of the keepalive timeout source so it can be removed when the account disconnects. This prevents a possible crash if the timeout fired after the account disconnected.
Evan Schoenberg <evands@pidgin.im>
parents: 22067
diff changeset
1565 purple_timeout_remove(js->keepalive_timeout);
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1566
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1567 g_free(js->srv_rec);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1568 js->srv_rec = NULL;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1569
26286
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1570 g_free(js->stun_ip);
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1571 js->stun_ip = NULL;
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1572
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1573 /* cancel DNS query for STUN, if one is ongoing */
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1574 if (js->stun_query) {
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1575 purple_dnsquery_destroy(js->stun_query);
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1576 js->stun_query = NULL;
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1577 }
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
1578
23911
f54fe603e84a Fix a stupid mistake in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents: 23910
diff changeset
1579 g_free(js);
f54fe603e84a Fix a stupid mistake in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents: 23910
diff changeset
1580
11389
c1e05b75b0b0 [gaim-migrate @ 13617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11387
diff changeset
1581 gc->proto_data = NULL;
5093
7761492245e6 [gaim-migrate @ 5455]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
1582 }
7761492245e6 [gaim-migrate @ 5455]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
1583
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1584 void jabber_stream_set_state(JabberStream *js, JabberStreamState state)
3105
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1585 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1586 js->state = state;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1587 switch(state) {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1588 case JABBER_STREAM_OFFLINE:
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1589 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1590 case JABBER_STREAM_CONNECTING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1591 purple_connection_update_progress(js->gc, _("Connecting"), 1,
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1592 JABBER_CONNECT_STEPS);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1593 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1594 case JABBER_STREAM_INITIALIZING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1595 purple_connection_update_progress(js->gc, _("Initializing Stream"),
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1596 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1597 jabber_stream_init(js);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1598 break;
17813
c5cc8ebf62c0 Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <am@adiumx.com>
parents: 17810
diff changeset
1599 case JABBER_STREAM_INITIALIZING_ENCRYPTION:
c5cc8ebf62c0 Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <am@adiumx.com>
parents: 17810
diff changeset
1600 purple_connection_update_progress(js->gc, _("Initializing SSL/TLS"),
c5cc8ebf62c0 Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <am@adiumx.com>
parents: 17810
diff changeset
1601 6, JABBER_CONNECT_STEPS);
c5cc8ebf62c0 Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <am@adiumx.com>
parents: 17810
diff changeset
1602 break;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1603 case JABBER_STREAM_AUTHENTICATING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1604 purple_connection_update_progress(js->gc, _("Authenticating"),
17813
c5cc8ebf62c0 Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <am@adiumx.com>
parents: 17810
diff changeset
1605 js->gsc ? 7 : 3, JABBER_CONNECT_STEPS);
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1606 if(js->protocol_version == JABBER_PROTO_0_9 && js->registration) {
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1607 jabber_register_start(js);
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1608 } else if(js->auth_type == JABBER_AUTH_IQ_AUTH) {
25242
36a2911cba0f some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@pidgin.im>
parents: 25087
diff changeset
1609 /* with dreamhost's xmpp server at least, you have to
36a2911cba0f some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@pidgin.im>
parents: 25087
diff changeset
1610 specify a resource or you will get a "406: Not
36a2911cba0f some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@pidgin.im>
parents: 25087
diff changeset
1611 Acceptable"
36a2911cba0f some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@pidgin.im>
parents: 25087
diff changeset
1612 */
36a2911cba0f some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@pidgin.im>
parents: 25087
diff changeset
1613 if(!js->user->resource || *js->user->resource == '\0') {
36a2911cba0f some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@pidgin.im>
parents: 25087
diff changeset
1614 g_free(js->user->resource);
36a2911cba0f some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@pidgin.im>
parents: 25087
diff changeset
1615 js->user->resource = g_strdup("Home");
36a2911cba0f some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@pidgin.im>
parents: 25087
diff changeset
1616 }
36a2911cba0f some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@pidgin.im>
parents: 25087
diff changeset
1617
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1618 jabber_auth_start_old(js);
8016
d75a4e86f7c3 [gaim-migrate @ 8696]
Nathan Walp <nwalp@pidgin.im>
parents: 8013
diff changeset
1619 }
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1620 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1621 case JABBER_STREAM_REINITIALIZING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1622 purple_connection_update_progress(js->gc, _("Re-initializing Stream"),
17813
c5cc8ebf62c0 Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <am@adiumx.com>
parents: 17810
diff changeset
1623 (js->gsc ? 8 : 4), JABBER_CONNECT_STEPS);
16847
cd87fc9c6856 this should fix jabber buddy icons (but it will re-introduce the behavior of overwriting your vCard whenever you sign in).
Nathan Walp <nwalp@pidgin.im>
parents: 16799
diff changeset
1624
14700
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
1625 /* The stream will be reinitialized later, in jabber_recv_cb_ssl() */
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
1626 js->reinit = TRUE;
16847
cd87fc9c6856 this should fix jabber buddy icons (but it will re-introduce the behavior of overwriting your vCard whenever you sign in).
Nathan Walp <nwalp@pidgin.im>
parents: 16799
diff changeset
1627
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1628 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1629 case JABBER_STREAM_CONNECTED:
16847
cd87fc9c6856 this should fix jabber buddy icons (but it will re-introduce the behavior of overwriting your vCard whenever you sign in).
Nathan Walp <nwalp@pidgin.im>
parents: 16799
diff changeset
1630 /* now we can alert the core that we're ready to send status */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1631 purple_connection_set_state(js->gc, PURPLE_CONNECTED);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1632 break;
3105
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1633 }
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1634 }
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1635
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1636 char *jabber_get_next_id(JabberStream *js)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1637 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1638 return g_strdup_printf("purple%x", js->next_id++);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1639 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1640
14453
1cc75906700c [gaim-migrate @ 17098]
Mark Doliner <markdoliner@pidgin.im>
parents: 14375
diff changeset
1641
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
1642 void jabber_idle_set(PurpleConnection *gc, int idle)
3340
7e59a209931d [gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3337
diff changeset
1643 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1644 JabberStream *js = gc->proto_data;
3340
7e59a209931d [gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3337
diff changeset
1645
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1646 js->idle = idle ? time(NULL) - idle : idle;
26946
d33862e3c96f propagate from branch 'im.pidgin.pidgin' (head a495982a23a92e75616731c8f41a2b007670d0da)
Paul Aurich <darkrain42@pidgin.im>
parents: 26945 26874
diff changeset
1647
24676
27ea4d447838 A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <malu@pidgin.im>
parents: 24430
diff changeset
1648 /* send out an updated prescence */
27ea4d447838 A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <malu@pidgin.im>
parents: 24430
diff changeset
1649 purple_debug_info("jabber", "sending updated presence for idle\n");
26959
8482365bb2ec Fix merging.
Paul Aurich <darkrain42@pidgin.im>
parents: 26958
diff changeset
1650 jabber_presence_send(js, FALSE);
3314
12fa45677717 [gaim-migrate @ 3332]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3311
diff changeset
1651 }
12fa45677717 [gaim-migrate @ 3332]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3311
diff changeset
1652
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1653 void jabber_blocklist_parse_push(JabberStream *js, const char *from,
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1654 JabberIqType type, const char *id,
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1655 xmlnode *child)
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1656 {
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1657 JabberIq *result;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1658 xmlnode *item;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1659 PurpleAccount *account;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1660 gboolean is_block;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1661
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1662 if (!jabber_is_own_account(js, from)) {
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1663 xmlnode *error, *x;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1664 result = jabber_iq_new(js, JABBER_IQ_ERROR);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1665 xmlnode_set_attrib(result->node, "id", id);
27182
641a77b2ee97 No, I had that right the first time; if it's not our account, then there *is* a from and we need to route the IQ to the proper place.
Paul Aurich <darkrain42@pidgin.im>
parents: 27181
diff changeset
1666 if (from)
641a77b2ee97 No, I had that right the first time; if it's not our account, then there *is* a from and we need to route the IQ to the proper place.
Paul Aurich <darkrain42@pidgin.im>
parents: 27181
diff changeset
1667 xmlnode_set_attrib(result->node, "to", from);
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1668
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1669 error = xmlnode_new_child(result->node, "error");
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1670 xmlnode_set_attrib(error, "type", "cancel");
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1671 x = xmlnode_new_child(error, "not-allowed");
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1672 xmlnode_set_namespace(x, "urn:ietf:params:xml:ns:xmpp-stanzas");
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1673
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1674 jabber_iq_send(result);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1675 return;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1676 }
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1677
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1678 account = purple_connection_get_account(js->gc);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1679 is_block = g_str_equal(child->name, "block");
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1680
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1681 item = xmlnode_get_child(child, "item");
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1682 if (!is_block && item == NULL) {
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1683 /* Unblock everyone */
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1684 purple_debug_info("jabber", "Received unblock push. Unblocking everyone.\n");
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1685
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1686 while (account->deny != NULL) {
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1687 purple_privacy_deny_remove(account, account->deny->data, TRUE);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1688 }
27181
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1689 } else if (item == NULL) {
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1690 /* An empty <block/> is bogus */
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1691 xmlnode *error, *x;
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1692 result = jabber_iq_new(js, JABBER_IQ_ERROR);
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1693 xmlnode_set_attrib(result->node, "id", id);
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1694
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1695 error = xmlnode_new_child(result->node, "error");
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1696 xmlnode_set_attrib(error, "type", "modify");
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1697 x = xmlnode_new_child(error, "bad-request");
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1698 xmlnode_set_namespace(x, "urn:ietf:params:xml:ns:xmpp-stanzas");
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1699
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1700 jabber_iq_send(result);
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1701 return;
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1702 } else {
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1703 for ( ; item; item = xmlnode_get_next_twin(item)) {
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1704 const char *jid = xmlnode_get_attrib(item, "jid");
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1705 if (jid == NULL || *jid == '\0')
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1706 continue;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1707
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1708 if (is_block)
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1709 purple_privacy_deny_add(account, jid, TRUE);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1710 else
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1711 purple_privacy_deny_remove(account, jid, TRUE);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1712 }
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1713 }
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1714
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1715 result = jabber_iq_new(js, JABBER_IQ_RESULT);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1716 xmlnode_set_attrib(result->node, "id", id);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1717 jabber_iq_send(result);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1718 }
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1719
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1720 static void jabber_blocklist_parse(JabberStream *js, const char *from,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1721 JabberIqType type, const char *id,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1722 xmlnode *packet, gpointer data)
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1723 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1724 xmlnode *blocklist, *item;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1725 PurpleAccount *account;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1726
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1727 blocklist = xmlnode_get_child_with_namespace(packet,
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1728 "blocklist", "urn:xmpp:blocking");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1729 account = purple_connection_get_account(js->gc);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1730
27176
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1731 if (type == JABBER_IQ_ERROR || blocklist == NULL)
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1732 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1733
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1734 /* This is the only privacy method supported by XEP-0191 */
27176
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1735 if (account->perm_deny != PURPLE_PRIVACY_DENY_USERS)
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1736 account->perm_deny = PURPLE_PRIVACY_DENY_USERS;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1737
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1738 /*
27176
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1739 * TODO: When account->deny is something more than a hash table, this can
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1740 * be re-written to find the set intersection and difference.
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1741 */
27176
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1742 while (account->deny)
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1743 purple_privacy_deny_remove(account, account->deny->data, TRUE);
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1744
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1745 item = xmlnode_get_child(blocklist, "item");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1746 while (item != NULL) {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1747 const char *jid = xmlnode_get_attrib(item, "jid");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1748 purple_privacy_deny_add(account, jid, TRUE);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1749 item = xmlnode_get_next_twin(item);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1750 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1751 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1752
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1753 void jabber_request_block_list(JabberStream *js)
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1754 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1755 JabberIq *iq;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1756 xmlnode *blocklist;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1757
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1758 iq = jabber_iq_new(js, JABBER_IQ_GET);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1759
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1760 blocklist = xmlnode_new_child(iq->node, "blocklist");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1761 xmlnode_set_namespace(blocklist, "urn:xmpp:blocking");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1762
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1763 jabber_iq_set_callback(iq, jabber_blocklist_parse, NULL);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1764
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1765 jabber_iq_send(iq);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1766 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1767
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1768 void jabber_add_deny(PurpleConnection *gc, const char *who)
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1769 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1770 JabberStream *js;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1771 JabberIq *iq;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1772 xmlnode *block, *item;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1773
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1774 js = gc->proto_data;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1775 if (js == NULL)
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1776 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1777
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1778 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1779 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1780 jabber_google_roster_add_deny(gc, who);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1781 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1782 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1783
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1784 if (!(js->server_caps & JABBER_CAP_BLOCKING))
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1785 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1786 purple_notify_error(NULL, _("Server doesn't support blocking"),
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1787 _("Server doesn't support blocking"), NULL);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1788 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1789 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1790
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1791 iq = jabber_iq_new(js, JABBER_IQ_SET);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1792
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1793 block = xmlnode_new_child(iq->node, "block");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1794 xmlnode_set_namespace(block, "urn:xmpp:blocking");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1795
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1796 item = xmlnode_new_child(block, "item");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1797 xmlnode_set_attrib(item, "jid", who);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1798
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1799 jabber_iq_send(iq);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1800 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1801
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1802 void jabber_rem_deny(PurpleConnection *gc, const char *who)
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1803 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1804 JabberStream *js;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1805 JabberIq *iq;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1806 xmlnode *unblock, *item;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1807
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1808 js = gc->proto_data;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1809 if (js == NULL)
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1810 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1811
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1812 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1813 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1814 jabber_google_roster_rem_deny(gc, who);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1815 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1816 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1817
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1818 if (!(js->server_caps & JABBER_CAP_BLOCKING))
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1819 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1820
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1821 iq = jabber_iq_new(js, JABBER_IQ_SET);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1822
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1823 unblock = xmlnode_new_child(iq->node, "unblock");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1824 xmlnode_set_namespace(unblock, "urn:xmpp:blocking");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1825
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1826 item = xmlnode_new_child(unblock, "item");
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1827 xmlnode_set_attrib(item, "jid", who);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1828
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1829 jabber_iq_send(iq);
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1830 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1831
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1832 void jabber_add_feature(const char *namespace, JabberFeatureEnabled cb) {
17783
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
1833 JabberFeature *feat;
19994
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1834
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1835 g_return_if_fail(namespace != NULL);
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1836
17783
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
1837 feat = g_new0(JabberFeature,1);
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1838 feat->namespace = g_strdup(namespace);
17783
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
1839 feat->is_enabled = cb;
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1840
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1841 /* try to remove just in case it already exists in the list */
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1842 jabber_remove_feature(namespace);
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1843
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1844 jabber_features = g_list_append(jabber_features, feat);
17770
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1845 }
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1846
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1847 void jabber_remove_feature(const char *namespace) {
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1848 GList *feature;
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1849 for(feature = jabber_features; feature; feature = feature->next) {
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1850 JabberFeature *feat = (JabberFeature*)feature->data;
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1851 if(!strcmp(feat->namespace, namespace)) {
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1852 g_free(feat->namespace);
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1853 g_free(feature->data);
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
1854 jabber_features = g_list_delete_link(jabber_features, feature);
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1855 break;
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1856 }
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1857 }
17770
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1858 }
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1859
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1860 static void jabber_features_destroy(void)
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1861 {
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1862 while (jabber_features) {
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1863 JabberFeature *feature = jabber_features->data;
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1864 g_free(feature->namespace);
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1865 g_free(feature);
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1866 jabber_features = g_list_remove_link(jabber_features, jabber_features);
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1867 }
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1868 }
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1869
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
1870 void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name) {
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1871 GList *identity;
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1872 JabberIdentity *ident;
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1873 /* both required according to XEP-0030 */
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1874 g_return_if_fail(category != NULL);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1875 g_return_if_fail(type != NULL);
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
1876
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1877 for(identity = jabber_identities; identity; identity = identity->next) {
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1878 JabberIdentity *ident = (JabberIdentity*)identity->data;
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
1879 if (!strcmp(ident->category, category) &&
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
1880 !strcmp(ident->type, type) &&
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
1881 ((!ident->lang && !lang) || (ident->lang && lang && !strcmp(ident->lang, lang)))) {
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
1882 return;
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
1883 }
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1884 }
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
1885
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1886 ident = g_new0(JabberIdentity, 1);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1887 ident->category = g_strdup(category);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1888 ident->type = g_strdup(type);
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
1889 ident->lang = g_strdup(lang);
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1890 ident->name = g_strdup(name);
26992
3a3f6cc07b02 Don't crash when the caps cb is NULL and don't corrupt jabber_identities
Paul Aurich <darkrain42@pidgin.im>
parents: 26984
diff changeset
1891 jabber_identities = g_list_prepend(jabber_identities, ident);
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1892 }
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1893
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1894 static void jabber_identities_destroy(void)
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1895 {
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1896 while (jabber_identities) {
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1897 JabberIdentity *id = jabber_identities->data;
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1898 g_free(id->category);
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1899 g_free(id->type);
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1900 g_free(id->lang);
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1901 g_free(id->name);
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1902 g_free(id);
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1903 jabber_identities = g_list_remove_link(jabber_identities, jabber_identities);
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1904 }
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1905 }
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1906
26533
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
1907 gboolean jabber_stream_is_ssl(JabberStream *js)
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
1908 {
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
1909 return (js->bosh && jabber_bosh_connection_is_ssl(js->bosh)) ||
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
1910 (!js->bosh && js->gsc);
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
1911 }
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
1912
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
1913 const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1914 {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
1915 return "jabber";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
1916 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4915
diff changeset
1917
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
1918 const char* jabber_list_emblem(PurpleBuddy *b)
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4915
diff changeset
1919 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1920 JabberStream *js;
13486
4ea1a712aaa3 [gaim-migrate @ 15861]
Daniel Atallah <datallah@pidgin.im>
parents: 13385
diff changeset
1921 JabberBuddy *jb = NULL;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
1922 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b));
27292
1e8a952548f9 Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <darkrain42@pidgin.im>
parents: 27291
diff changeset
1923
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
1924 if(!gc)
15558
6fb7a0ad8a0b clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15524
diff changeset
1925 return NULL;
6fb7a0ad8a0b clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15524
diff changeset
1926
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
1927 js = gc->proto_data;
13486
4ea1a712aaa3 [gaim-migrate @ 15861]
Daniel Atallah <datallah@pidgin.im>
parents: 13385
diff changeset
1928 if(js)
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
1929 jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE);
5135
fbcfa5df4c5e [gaim-migrate @ 5499]
Nathan Walp <nwalp@pidgin.im>
parents: 5112
diff changeset
1930
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1931 if(!PURPLE_BUDDY_IS_ONLINE(b)) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1932 if(jb && (jb->subscription & JABBER_SUB_PENDING ||
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1933 !(jb->subscription & JABBER_SUB_TO)))
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1934 return "not-authorized";
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1935 }
27292
1e8a952548f9 Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <darkrain42@pidgin.im>
parents: 27291
diff changeset
1936
25577
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1937 if (jb) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1938 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, NULL);
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1939 if (jbr) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1940 const gchar *client_type =
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1941 jabber_resource_get_identity_category_type(jbr, "client");
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1942
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1943 if (client_type) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1944 if (strcmp(client_type, "phone") == 0) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1945 return "mobile";
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1946 } else if (strcmp(client_type, "web") == 0) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1947 return "external";
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1948 } else if (strcmp(client_type, "handheld") == 0) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1949 return "hiptop";
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1950 } else if (strcmp(client_type, "bot") == 0) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1951 return "bot";
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1952 }
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1953 /* the default value "pc" falls through and has no emblem */
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1954 }
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1955 }
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1956 }
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
1957
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1958 return NULL;
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4915
diff changeset
1959 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1960
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
1961 char *jabber_status_text(PurpleBuddy *b)
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1962 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1963 char *ret = NULL;
18310
dbc5240f6bf5 Fix a crash when you have an IM window open on a jabber account and the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18235
diff changeset
1964 JabberBuddy *jb = NULL;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
1965 PurpleAccount *account = purple_buddy_get_account(b);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
1966 PurpleConnection *gc = purple_account_get_connection(account);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
1967
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
1968 if (gc && gc->proto_data)
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
1969 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5223
diff changeset
1970
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1971 if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1972 ret = g_strdup(_("Not Authorized"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1973 } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1974 ret = g_strdup(jb->error_msg);
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1975 } else {
26868
5c99daf94155 Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <darkrain42@pidgin.im>
parents: 26860
diff changeset
1976 PurplePresence *presence = purple_buddy_get_presence(b);
5c99daf94155 Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <darkrain42@pidgin.im>
parents: 26860
diff changeset
1977 PurpleStatus *status =purple_presence_get_active_status(presence);
7095
17d2b54254f8 [gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents: 7072
diff changeset
1978 char *stripped;
17d2b54254f8 [gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents: 7072
diff changeset
1979
26868
5c99daf94155 Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <darkrain42@pidgin.im>
parents: 26860
diff changeset
1980 if(!(stripped = purple_markup_strip_html(purple_status_get_attr_string(status, "message")))) {
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1981 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1982 PurpleStatus *status = purple_presence_get_status(presence, "tune");
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1983 stripped = g_strdup(purple_status_get_attr_string(status, PURPLE_TUNE_TITLE));
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1984 }
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1985 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1986
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1987 if(stripped) {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1988 ret = g_markup_escape_text(stripped, -1);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1989 g_free(stripped);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1990 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1991 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1992
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1993 return ret;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1994 }
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1995
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
1996 static void
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
1997 jabber_tooltip_add_resource_text(JabberBuddyResource *jbr,
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
1998 PurpleNotifyUserInfo *user_info, gboolean multiple_resources)
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
1999 {
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2000 char *text = NULL;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2001 char *res = NULL;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2002 char *label, *value;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2003 const char *state;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2004
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2005 if(jbr->status) {
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2006 char *tmp;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2007 text = purple_strreplace(jbr->status, "\n", "<br />\n");
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2008 tmp = purple_markup_strip_html(text);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2009 g_free(text);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2010 text = g_markup_escape_text(tmp, -1);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2011 g_free(tmp);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2012 }
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2013
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2014 if(jbr->name)
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2015 res = g_strdup_printf(" (%s)", jbr->name);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2016
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2017 state = jabber_buddy_state_get_name(jbr->state);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2018 if (text != NULL && !purple_utf8_strcasecmp(state, text)) {
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2019 g_free(text);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2020 text = NULL;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2021 }
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2022
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2023 label = g_strdup_printf("%s%s", _("Status"), (res ? res : ""));
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2024 value = g_strdup_printf("%s%s%s", state, (text ? ": " : ""), (text ? text : ""));
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2025
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2026 purple_notify_user_info_add_pair(user_info, label, value);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2027 g_free(label);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2028 g_free(value);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2029 g_free(text);
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2030
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2031 /* if the resource is idle, show that */
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2032 /* only show it if there is more than one resource available for
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2033 the buddy, since the "general" idleness will be shown anyway,
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2034 this way we can see see the idleness of lower-priority resources */
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2035 if (jbr->idle && multiple_resources) {
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2036 gchar *idle_str =
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2037 purple_str_seconds_to_string(time(NULL) - jbr->idle);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2038 label = g_strdup_printf("%s%s", _("Idle"), (res ? res : ""));
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2039 purple_notify_user_info_add_pair(user_info, label, idle_str);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2040 g_free(idle_str);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2041 g_free(label);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2042 }
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2043 g_free(res);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2044 }
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2045
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
2046 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
4744
c3a5a15c01f7 [gaim-migrate @ 5059]
Sean Egan <seanegan@pidgin.im>
parents: 4732
diff changeset
2047 {
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2048 JabberBuddy *jb;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2049 PurpleAccount *account;
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2050 PurpleConnection *gc;
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2051
12970
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12948
diff changeset
2052 g_return_if_fail(b != NULL);
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2053
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2054 account = purple_buddy_get_account(b);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2055 g_return_if_fail(account != NULL);
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2056
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2057 gc = purple_account_get_connection(account);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2058 g_return_if_fail(gc != NULL);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2059 g_return_if_fail(gc->proto_data != NULL);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2060
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2061 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2062
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
2063 if(jb) {
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2064 JabberBuddyResource *jbr = NULL;
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2065 PurplePresence *presence = purple_buddy_get_presence(b);
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
2066 const char *sub;
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2067 GList *l;
19920
7b0d20da73d0 Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@pidgin.im>
parents: 19897
diff changeset
2068 const char *mood;
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2069 gboolean multiple_resources =
25836
ed37c7a05f8a Only show idle time for idle resources in tooltip text when there is more than
Marcus Lundblad <malu@pidgin.im>
parents: 25532
diff changeset
2070 jb->resources && g_list_next(jb->resources);
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2071 JabberBuddyResource *top_jbr = jabber_buddy_find_resource(jb, NULL);
25842
8da3a69dfa55 Remove some unused variables
Marcus Lundblad <malu@pidgin.im>
parents: 25841
diff changeset
2072
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2073 /* resource-specific info for the top resource */
25843
67bc9c8a4b8d Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <malu@pidgin.im>
parents: 25842
diff changeset
2074 if (top_jbr) {
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2075 jabber_tooltip_add_resource_text(top_jbr, user_info,
25843
67bc9c8a4b8d Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <malu@pidgin.im>
parents: 25842
diff changeset
2076 multiple_resources);
67bc9c8a4b8d Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <malu@pidgin.im>
parents: 25842
diff changeset
2077 }
25842
8da3a69dfa55 Remove some unused variables
Marcus Lundblad <malu@pidgin.im>
parents: 25841
diff changeset
2078
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2079 for(l=jb->resources; l; l = l->next) {
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2080 jbr = l->data;
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2081 /* the remaining resources */
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2082 if (jbr != top_jbr) {
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2083 jabber_tooltip_add_resource_text(jbr, user_info,
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2084 multiple_resources);
12944
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2085 }
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2086 }
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2087
12948
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
2088 if (full) {
17780
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
2089 PurpleStatus *status;
23413
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
2090
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2091 status = purple_presence_get_active_status(presence);
23413
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
2092 mood = purple_status_get_attr_string(status, "mood");
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
2093 if(mood != NULL) {
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
2094 const char *moodtext;
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
2095 moodtext = purple_status_get_attr_string(status, "moodtext");
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
2096 if(moodtext != NULL) {
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
2097 char *moodplustext = g_strdup_printf("%s (%s)", mood, moodtext);
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
2098
17780
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
2099 purple_notify_user_info_add_pair(user_info, _("Mood"), moodplustext);
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
2100 g_free(moodplustext);
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
2101 } else
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
2102 purple_notify_user_info_add_pair(user_info, _("Mood"), mood);
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2103 }
22133
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2104 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2105 PurpleStatus *tune = purple_presence_get_status(presence, "tune");
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2106 const char *title = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE);
22133
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2107 const char *artist = purple_status_get_attr_string(tune, PURPLE_TUNE_ARTIST);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2108 const char *album = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2109 char *playing = purple_util_format_song_info(title, artist, album, NULL);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2110 if (playing) {
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2111 purple_notify_user_info_add_pair(user_info, _("Now Listening"), playing);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2112 g_free(playing);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2113 }
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2114 }
25838
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2115
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2116 if(jb->subscription & JABBER_SUB_FROM) {
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2117 if(jb->subscription & JABBER_SUB_TO)
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2118 sub = _("Both");
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2119 else if(jb->subscription & JABBER_SUB_PENDING)
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2120 sub = _("From (To pending)");
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2121 else
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2122 sub = _("From");
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2123 } else {
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2124 if(jb->subscription & JABBER_SUB_TO)
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2125 sub = _("To");
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2126 else if(jb->subscription & JABBER_SUB_PENDING)
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2127 sub = _("None (To pending)");
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2128 else
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2129 sub = _("None");
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
2130 }
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
2131
25838
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2132 purple_notify_user_info_add_pair(user_info, _("Subscription"), sub);
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2133
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2134 }
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2135
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2136 if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2137 purple_notify_user_info_add_pair(user_info, _("Error"), jb->error_msg);
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
2138 }
4745
24867c379d37 [gaim-migrate @ 5060]
Nathan Walp <nwalp@pidgin.im>
parents: 4744
diff changeset
2139 }
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
2140 }
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
2141
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
2142 GList *jabber_status_types(PurpleAccount *account)
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2143 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2144 PurpleStatusType *type;
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2145 GList *types = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2146 PurpleValue *priority_value;
24396
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2147 PurpleValue *buzz_enabled;
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2148
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2149 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2150 purple_value_set_int(priority_value, 1);
24396
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2151 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2152 purple_value_set_boolean(buzz_enabled, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2153 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2154 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_ONLINE),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2155 NULL, TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2156 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2157 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2158 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2159 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
2160 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
24396
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2161 "buzz", _("Allow Buzz"), buzz_enabled,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2162 NULL);
9980
ea4241d66fd1 [gaim-migrate @ 10891]
Nathan Walp <nwalp@pidgin.im>
parents: 9954
diff changeset
2163 types = g_list_append(types, type);
ea4241d66fd1 [gaim-migrate @ 10891]
Nathan Walp <nwalp@pidgin.im>
parents: 9954
diff changeset
2164
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2165 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2166 purple_value_set_int(priority_value, 1);
25956
71e85c4df8ed Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents: 25954
diff changeset
2167 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
71e85c4df8ed Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents: 25954
diff changeset
2168 purple_value_set_boolean(buzz_enabled, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2169 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2170 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_CHAT),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2171 _("Chatty"), TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2172 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2173 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2174 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2175 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
2176 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
24396
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2177 "buzz", _("Allow Buzz"), buzz_enabled,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2178 NULL);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2179 types = g_list_append(types, type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2180
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2181 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2182 purple_value_set_int(priority_value, 0);
25956
71e85c4df8ed Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents: 25954
diff changeset
2183 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
71e85c4df8ed Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents: 25954
diff changeset
2184 purple_value_set_boolean(buzz_enabled, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2185 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2186 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_AWAY),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2187 NULL, TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2188 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2189 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2190 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2191 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
2192 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
2193 "buzz", _("Allow Buzz"), buzz_enabled,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2194 NULL);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2195 types = g_list_append(types, type);
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2196
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2197 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2198 purple_value_set_int(priority_value, 0);
25956
71e85c4df8ed Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents: 25954
diff changeset
2199 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
71e85c4df8ed Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents: 25954
diff changeset
2200 purple_value_set_boolean(buzz_enabled, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2201 type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2202 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_XA),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2203 NULL, TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2204 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2205 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2206 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2207 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
2208 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
2209 "buzz", _("Allow Buzz"), buzz_enabled,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2210 NULL);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2211 types = g_list_append(types, type);
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2212
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2213 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2214 purple_value_set_int(priority_value, 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2215 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2216 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_DND),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2217 _("Do Not Disturb"), TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2218 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2219 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2220 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2221 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
2222 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2223 NULL);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2224 types = g_list_append(types, type);
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2225
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2226 /*
8166
0a109d9655c7 [gaim-migrate @ 8878]
Nathan Walp <nwalp@pidgin.im>
parents: 8158
diff changeset
2227 if(js->protocol_version == JABBER_PROTO_0_9)
0a109d9655c7 [gaim-migrate @ 8878]
Nathan Walp <nwalp@pidgin.im>
parents: 8158
diff changeset
2228 m = g_list_append(m, _("Invisible"));
10009
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 9980
diff changeset
2229 */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2230
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2231 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
2232 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_UNAVAILABLE),
25552
ffd94785b2ad For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25328
diff changeset
2233 NULL, TRUE, TRUE, FALSE,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2234 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
2235 NULL);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
2236 types = g_list_append(types, type);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
2237
21193
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2238 type = purple_status_type_new_with_attrs(PURPLE_STATUS_TUNE,
24693
9ab5d932ab6c I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@pidgin.im>
parents: 24430
diff changeset
2239 "tune", NULL, FALSE, TRUE, TRUE,
21193
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2240 PURPLE_TUNE_ARTIST, _("Tune Artist"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2241 PURPLE_TUNE_TITLE, _("Tune Title"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2242 PURPLE_TUNE_ALBUM, _("Tune Album"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2243 PURPLE_TUNE_GENRE, _("Tune Genre"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2244 PURPLE_TUNE_COMMENT, _("Tune Comment"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2245 PURPLE_TUNE_TRACK, _("Tune Track"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2246 PURPLE_TUNE_TIME, _("Tune Time"), purple_value_new(PURPLE_TYPE_INT),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2247 PURPLE_TUNE_YEAR, _("Tune Year"), purple_value_new(PURPLE_TYPE_INT),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2248 PURPLE_TUNE_URL, _("Tune URL"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2249 NULL);
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2250 types = g_list_append(types, type);
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2251
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2252 return types;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2253 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2254
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
2255 static void
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
2256 jabber_password_change_result_cb(JabberStream *js, const char *from,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
2257 JabberIqType type, const char *id,
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
2258 xmlnode *packet, gpointer data)
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2259 {
26687
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
2260 if (type == JABBER_IQ_RESULT) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2261 purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2262 _("Your password has been changed."));
21129
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
2263
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
2264 purple_account_set_password(js->gc->account, (char *)data);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2265 } else {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2266 char *msg = jabber_parse_error(js, packet, NULL);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2267
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2268 purple_notify_error(js->gc, _("Error changing password"),
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2269 _("Error changing password"), msg);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2270 g_free(msg);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2271 }
21129
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
2272
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
2273 g_free(data);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2274 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2275
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2276 static void jabber_password_change_cb(JabberStream *js,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2277 PurpleRequestFields *fields)
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2278 {
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2279 const char *p1, *p2;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2280 JabberIq *iq;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2281 xmlnode *query, *y;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2282
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2283 p1 = purple_request_fields_get_string(fields, "password1");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2284 p2 = purple_request_fields_get_string(fields, "password2");
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2285
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2286 if(strcmp(p1, p2)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2287 purple_notify_error(js->gc, NULL, _("New passwords do not match."), NULL);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2288 return;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2289 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2290
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2291 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2292
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2293 xmlnode_set_attrib(iq->node, "to", js->user->domain);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2294
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2295 query = xmlnode_get_child(iq->node, "query");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2296
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2297 y = xmlnode_new_child(query, "username");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2298 xmlnode_insert_data(y, js->user->node, -1);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2299 y = xmlnode_new_child(query, "password");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2300 xmlnode_insert_data(y, p1, -1);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2301
21129
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
2302 jabber_iq_set_callback(iq, jabber_password_change_result_cb, g_strdup(p1));
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2303
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2304 jabber_iq_send(iq);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2305 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2306
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2307 static void jabber_password_change(PurplePluginAction *action)
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2308 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
2309
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2310 PurpleConnection *gc = (PurpleConnection *) action->context;
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2311 JabberStream *js = gc->proto_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2312 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2313 PurpleRequestFieldGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2314 PurpleRequestField *field;
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2315
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2316 fields = purple_request_fields_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2317 group = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2318 purple_request_fields_add_group(fields, group);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2319
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2320 field = purple_request_field_string_new("password1", _("Password"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2321 "", FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2322 purple_request_field_string_set_masked(field, TRUE);
18381
8192b072afa6 Make password fileds in Jabber's Change Password dialog required. Fixes #1907
Sean Egan <seanegan@pidgin.im>
parents: 18310
diff changeset
2323 purple_request_field_set_required(field, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2324 purple_request_field_group_add_field(group, field);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2325
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2326 field = purple_request_field_string_new("password2", _("Password (again)"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2327 "", FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2328 purple_request_field_string_set_masked(field, TRUE);
18381
8192b072afa6 Make password fileds in Jabber's Change Password dialog required. Fixes #1907
Sean Egan <seanegan@pidgin.im>
parents: 18310
diff changeset
2329 purple_request_field_set_required(field, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2330 purple_request_field_group_add_field(group, field);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2331
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2332 purple_request_fields(js->gc, _("Change XMPP Password"),
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16847
diff changeset
2333 _("Change XMPP Password"), _("Please enter your new password"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2334 fields, _("OK"), G_CALLBACK(jabber_password_change_cb),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16302
diff changeset
2335 _("Cancel"), NULL,
19993
867bd1dfe680 Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <datallah@pidgin.im>
parents: 19920
diff changeset
2336 purple_connection_get_account(gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2337 js);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2338 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2339
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
2340 GList *jabber_actions(PurplePlugin *plugin, gpointer context)
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2341 {
17782
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
2342 PurpleConnection *gc = (PurpleConnection *) context;
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
2343 JabberStream *js = gc->proto_data;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2344 GList *m = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2345 PurplePluginAction *act;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4316
diff changeset
2346
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2347 act = purple_plugin_action_new(_("Set User Info..."),
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12284
diff changeset
2348 jabber_setup_set_info);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
2349 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4316
diff changeset
2350
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
2351 /* if (js->protocol_options & CHANGE_PASSWORD) { */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2352 act = purple_plugin_action_new(_("Change Password..."),
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12284
diff changeset
2353 jabber_password_change);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
2354 m = g_list_append(m, act);
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
2355 /* } */
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2356
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2357 act = purple_plugin_action_new(_("Search for Users..."),
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12284
diff changeset
2358 jabber_user_search_begin);
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
2359 m = g_list_append(m, act);
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
2360
17783
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
2361 purple_debug_info("jabber", "jabber_actions: have pep: %s\n", js->pep?"YES":"NO");
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
2362
17782
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
2363 if(js->pep)
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
2364 jabber_pep_init_actions(&m);
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
2365
17817
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
2366 if(js->commands)
8e0f271aab78 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <am@adiumx.com>
parents: 17815
diff changeset
2367 jabber_adhoc_init_server_commands(js, &m);
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
2368
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2369 return m;
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2370 }
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2371
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
2372 PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name)
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2373 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2374 PurpleBlistNode *gnode, *cnode;
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2375 JabberID *jid;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2376
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2377 if(!(jid = jabber_id_new(name)))
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2378 return NULL;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2379
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2380 for(gnode = purple_blist_get_root(); gnode;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2381 gnode = purple_blist_node_get_sibling_next(gnode)) {
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2382 for(cnode = purple_blist_node_get_first_child(gnode);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2383 cnode;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2384 cnode = purple_blist_node_get_sibling_next(cnode)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2385 PurpleChat *chat = (PurpleChat*)cnode;
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2386 const char *room, *server;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2387 GHashTable *components;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2388 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2389 continue;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2390
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2391 if (purple_chat_get_account(chat) != account)
8011
e9ac8bfe26da [gaim-migrate @ 8691]
Nathan Walp <nwalp@pidgin.im>
parents: 8010
diff changeset
2392 continue;
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2393
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2394 components = purple_chat_get_components(chat);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2395 if(!(room = g_hash_table_lookup(components, "room")))
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2396 continue;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2397 if(!(server = g_hash_table_lookup(components, "server")))
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2398 continue;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2399
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8135
diff changeset
2400 if(jid->node && jid->domain &&
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8135
diff changeset
2401 !g_utf8_collate(room, jid->node) && !g_utf8_collate(server, jid->domain)) {
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2402 jabber_id_free(jid);
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2403 return chat;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2404 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2405 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2406 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2407 jabber_id_free(jid);
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2408 return NULL;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2409 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2410
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
2411 void jabber_convo_closed(PurpleConnection *gc, const char *who)
8400
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2412 {
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2413 JabberStream *js = gc->proto_data;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2414 JabberID *jid;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2415 JabberBuddy *jb;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2416 JabberBuddyResource *jbr;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2417
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2418 if(!(jid = jabber_id_new(who)))
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2419 return;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2420
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2421 if((jb = jabber_buddy_find(js, who, TRUE)) &&
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2422 (jbr = jabber_buddy_find_resource(jb, jid->resource))) {
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2423 if(jbr->thread_id) {
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2424 g_free(jbr->thread_id);
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2425 jbr->thread_id = NULL;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2426 }
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2427 }
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2428
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2429 jabber_id_free(jid);
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2430 }
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2431
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2432
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2433 char *jabber_parse_error(JabberStream *js,
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2434 xmlnode *packet,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
2435 PurpleConnectionError *reason)
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2436 {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2437 xmlnode *error;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2438 const char *code = NULL, *text = NULL;
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
2439 const char *xmlns = xmlnode_get_namespace(packet);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2440 char *cdata = NULL;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2441
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2442 #define SET_REASON(x) \
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2443 if(reason != NULL) { *reason = x; }
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2444
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2445 if((error = xmlnode_get_child(packet, "error"))) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2446 cdata = xmlnode_get_data(error);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2447 code = xmlnode_get_attrib(error, "code");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2448
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2449 /* Stanza errors */
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2450 if(xmlnode_get_child(error, "bad-request")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2451 text = _("Bad Request");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2452 } else if(xmlnode_get_child(error, "conflict")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2453 text = _("Conflict");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2454 } else if(xmlnode_get_child(error, "feature-not-implemented")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2455 text = _("Feature Not Implemented");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2456 } else if(xmlnode_get_child(error, "forbidden")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2457 text = _("Forbidden");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2458 } else if(xmlnode_get_child(error, "gone")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2459 text = _("Gone");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2460 } else if(xmlnode_get_child(error, "internal-server-error")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2461 text = _("Internal Server Error");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2462 } else if(xmlnode_get_child(error, "item-not-found")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2463 text = _("Item Not Found");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2464 } else if(xmlnode_get_child(error, "jid-malformed")) {
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16847
diff changeset
2465 text = _("Malformed XMPP ID");
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2466 } else if(xmlnode_get_child(error, "not-acceptable")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2467 text = _("Not Acceptable");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2468 } else if(xmlnode_get_child(error, "not-allowed")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2469 text = _("Not Allowed");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2470 } else if(xmlnode_get_child(error, "not-authorized")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2471 text = _("Not Authorized");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2472 } else if(xmlnode_get_child(error, "payment-required")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2473 text = _("Payment Required");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2474 } else if(xmlnode_get_child(error, "recipient-unavailable")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2475 text = _("Recipient Unavailable");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2476 } else if(xmlnode_get_child(error, "redirect")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2477 /* XXX */
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2478 } else if(xmlnode_get_child(error, "registration-required")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2479 text = _("Registration Required");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2480 } else if(xmlnode_get_child(error, "remote-server-not-found")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2481 text = _("Remote Server Not Found");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2482 } else if(xmlnode_get_child(error, "remote-server-timeout")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2483 text = _("Remote Server Timeout");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2484 } else if(xmlnode_get_child(error, "resource-constraint")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2485 text = _("Server Overloaded");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2486 } else if(xmlnode_get_child(error, "service-unavailable")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2487 text = _("Service Unavailable");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2488 } else if(xmlnode_get_child(error, "subscription-required")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2489 text = _("Subscription Required");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2490 } else if(xmlnode_get_child(error, "unexpected-request")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2491 text = _("Unexpected Request");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2492 } else if(xmlnode_get_child(error, "undefined-condition")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2493 text = _("Unknown Error");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2494 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2495 } else if(xmlns && !strcmp(xmlns, "urn:ietf:params:xml:ns:xmpp-sasl")) {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2496 /* Most common reason can be the default */
21284
69472e4a5458 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents: 21281
diff changeset
2497 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2498 if(xmlnode_get_child(packet, "aborted")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2499 text = _("Authorization Aborted");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2500 } else if(xmlnode_get_child(packet, "incorrect-encoding")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2501 text = _("Incorrect encoding in authorization");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2502 } else if(xmlnode_get_child(packet, "invalid-authzid")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2503 text = _("Invalid authzid");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2504 } else if(xmlnode_get_child(packet, "invalid-mechanism")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2505 text = _("Invalid Authorization Mechanism");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2506 } else if(xmlnode_get_child(packet, "mechanism-too-weak")) {
21284
69472e4a5458 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents: 21281
diff changeset
2507 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2508 text = _("Authorization mechanism too weak");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2509 } else if(xmlnode_get_child(packet, "not-authorized")) {
21284
69472e4a5458 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents: 21281
diff changeset
2510 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
19993
867bd1dfe680 Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <datallah@pidgin.im>
parents: 19920
diff changeset
2511 /* Clear the pasword if it isn't being saved */
867bd1dfe680 Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <datallah@pidgin.im>
parents: 19920
diff changeset
2512 if (!purple_account_get_remember_password(js->gc->account))
867bd1dfe680 Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <datallah@pidgin.im>
parents: 19920
diff changeset
2513 purple_account_set_password(js->gc->account, NULL);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2514 text = _("Not Authorized");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2515 } else if(xmlnode_get_child(packet, "temporary-auth-failure")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2516 text = _("Temporary Authentication Failure");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2517 } else {
21284
69472e4a5458 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents: 21281
diff changeset
2518 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2519 text = _("Authentication Failure");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2520 }
15979
acfbd09bc217 Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <markdoliner@pidgin.im>
parents: 15977
diff changeset
2521 } else if(!strcmp(packet->name, "stream:error") ||
20929
8e72c1d47fbd Make sure that the xmlns isn't null before dereferencing it to fix CID 320.
Daniel Atallah <datallah@pidgin.im>
parents: 20404
diff changeset
2522 (!strcmp(packet->name, "error") && xmlns &&
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
2523 !strcmp(xmlns, "http://etherx.jabber.org/streams"))) {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2524 /* Most common reason as default: */
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
2525 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
8402
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2526 if(xmlnode_get_child(packet, "bad-format")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2527 text = _("Bad Format");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2528 } else if(xmlnode_get_child(packet, "bad-namespace-prefix")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2529 text = _("Bad Namespace Prefix");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2530 } else if(xmlnode_get_child(packet, "conflict")) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
2531 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE);
8402
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2532 text = _("Resource Conflict");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2533 } else if(xmlnode_get_child(packet, "connection-timeout")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2534 text = _("Connection Timeout");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2535 } else if(xmlnode_get_child(packet, "host-gone")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2536 text = _("Host Gone");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2537 } else if(xmlnode_get_child(packet, "host-unknown")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2538 text = _("Host Unknown");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2539 } else if(xmlnode_get_child(packet, "improper-addressing")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2540 text = _("Improper Addressing");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2541 } else if(xmlnode_get_child(packet, "internal-server-error")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2542 text = _("Internal Server Error");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2543 } else if(xmlnode_get_child(packet, "invalid-id")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2544 text = _("Invalid ID");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2545 } else if(xmlnode_get_child(packet, "invalid-namespace")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2546 text = _("Invalid Namespace");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2547 } else if(xmlnode_get_child(packet, "invalid-xml")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2548 text = _("Invalid XML");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2549 } else if(xmlnode_get_child(packet, "nonmatching-hosts")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2550 text = _("Non-matching Hosts");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2551 } else if(xmlnode_get_child(packet, "not-authorized")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2552 text = _("Not Authorized");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2553 } else if(xmlnode_get_child(packet, "policy-violation")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2554 text = _("Policy Violation");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2555 } else if(xmlnode_get_child(packet, "remote-connection-failed")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2556 text = _("Remote Connection Failed");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2557 } else if(xmlnode_get_child(packet, "resource-constraint")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2558 text = _("Resource Constraint");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2559 } else if(xmlnode_get_child(packet, "restricted-xml")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2560 text = _("Restricted XML");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2561 } else if(xmlnode_get_child(packet, "see-other-host")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2562 text = _("See Other Host");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2563 } else if(xmlnode_get_child(packet, "system-shutdown")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2564 text = _("System Shutdown");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2565 } else if(xmlnode_get_child(packet, "undefined-condition")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2566 text = _("Undefined Condition");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2567 } else if(xmlnode_get_child(packet, "unsupported-encoding")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2568 text = _("Unsupported Encoding");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2569 } else if(xmlnode_get_child(packet, "unsupported-stanza-type")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2570 text = _("Unsupported Stanza Type");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2571 } else if(xmlnode_get_child(packet, "unsupported-version")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2572 text = _("Unsupported Version");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2573 } else if(xmlnode_get_child(packet, "xml-not-well-formed")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2574 text = _("XML Not Well Formed");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2575 } else {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2576 text = _("Stream Error");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2577 }
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2578 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2579
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2580 #undef SET_REASON
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2581
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2582 if(text || cdata) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2583 char *ret = g_strdup_printf("%s%s%s", code ? code : "",
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2584 code ? ": " : "", text ? text : cdata);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2585 g_free(cdata);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2586 return ret;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2587 } else {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2588 return NULL;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2589 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2590 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2591
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2592 static PurpleCmdRet jabber_cmd_chat_config(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2593 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2594 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2595 JabberChat *chat = jabber_chat_find_by_conv(conv);
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2596
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2597 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2598 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2599
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2600 jabber_chat_request_room_configure(chat);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2601 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2602 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2603
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2604 static PurpleCmdRet jabber_cmd_chat_register(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2605 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2606 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2607 JabberChat *chat = jabber_chat_find_by_conv(conv);
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2608
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2609 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2610 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2611
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2612 jabber_chat_register(chat);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2613 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2614 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2615
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2616 static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2617 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2618 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2619 JabberChat *chat = jabber_chat_find_by_conv(conv);
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2620
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2621 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2622 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2623
26859
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2624 if (args && args[0] && *args[0])
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2625 jabber_chat_change_topic(chat, args[0]);
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2626 else {
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2627 const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv));
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2628 char *buf, *tmp, *tmp2;
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2629
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2630 if (cur) {
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2631 tmp = g_markup_escape_text(cur, -1);
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2632 tmp2 = purple_markup_linkify(tmp);
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2633 buf = g_strdup_printf(_("current topic is: %s"), tmp2);
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2634 g_free(tmp);
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2635 g_free(tmp2);
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2636 } else
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2637 buf = g_strdup(_("No topic is set"));
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2638 purple_conv_chat_write(PURPLE_CONV_CHAT(conv), "", buf,
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2639 PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2640 g_free(buf);
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2641 }
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2642
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2643 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2644 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2645
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2646 static PurpleCmdRet jabber_cmd_chat_nick(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2647 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2648 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2649 JabberChat *chat = jabber_chat_find_by_conv(conv);
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2650
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2651 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2652 return PURPLE_CMD_RET_FAILED;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2653
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2654 jabber_chat_change_nick(chat, args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2655 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2656 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2657
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2658 static PurpleCmdRet jabber_cmd_chat_part(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2659 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2660 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2661 JabberChat *chat = jabber_chat_find_by_conv(conv);
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2662
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2663 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2664 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2665
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2666 jabber_chat_part(chat, args ? args[0] : NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2667 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2668 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2669
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2670 static PurpleCmdRet jabber_cmd_chat_ban(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2671 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2672 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2673 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2674
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2675 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2676 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2677
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2678 if(!jabber_chat_ban_user(chat, args[0], args[1])) {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2679 *error = g_strdup_printf(_("Unable to ban user %s"), args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2680 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2681 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2682
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2683 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2684 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2685
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2686 static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv,
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2687 const char *cmd, char **args, char **error, void *data)
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2688 {
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2689 JabberChat *chat = jabber_chat_find_by_conv(conv);
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2690
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2691 if (!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2692 return PURPLE_CMD_RET_FAILED;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2693
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2694 if (strcmp(args[0], "owner") != 0 &&
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2695 strcmp(args[0], "admin") != 0 &&
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2696 strcmp(args[0], "member") != 0 &&
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2697 strcmp(args[0], "outcast") != 0 &&
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2698 strcmp(args[0], "none") != 0) {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2699 *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2700 return PURPLE_CMD_RET_FAILED;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2701 }
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2702
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2703 if (args[1]) {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2704 int i;
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2705 char **nicks = g_strsplit(args[1], " ", -1);
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2706
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2707 for (i = 0; nicks[i]; ++i)
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2708 if (!jabber_chat_affiliate_user(chat, nicks[i], args[0])) {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2709 *error = g_strdup_printf(_("Unable to affiliate user %s as \"%s\""), nicks[i], args[0]);
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2710 g_strfreev(nicks);
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2711 return PURPLE_CMD_RET_FAILED;
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2712 }
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2713
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2714 g_strfreev(nicks);
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2715 } else {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2716 jabber_chat_affiliation_list(chat, args[0]);
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2717 }
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2718
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2719 return PURPLE_CMD_RET_OK;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2720 }
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2721
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2722 static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv,
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2723 const char *cmd, char **args, char **error, void *data)
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2724 {
19217
ee1aa7e4c462 Fix uninitialized variable access.
Daniel Atallah <datallah@pidgin.im>
parents: 18986
diff changeset
2725 JabberChat *chat = jabber_chat_find_by_conv(conv);
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2726
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2727 if (!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2728 return PURPLE_CMD_RET_FAILED;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2729
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2730 if (strcmp(args[0], "moderator") != 0 &&
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2731 strcmp(args[0], "participant") != 0 &&
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2732 strcmp(args[0], "visitor") != 0 &&
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2733 strcmp(args[0], "none") != 0) {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2734 *error = g_strdup_printf(_("Unknown role: \"%s\""), args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2735 return PURPLE_CMD_RET_FAILED;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2736 }
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2737
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2738 if (args[1]) {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2739 int i;
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2740 char **nicks = g_strsplit(args[1], " ", -1);
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2741
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2742 for (i = 0; nicks[i]; i++)
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2743 if (!jabber_chat_role_user(chat, nicks[i], args[0])) {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2744 *error = g_strdup_printf(_("Unable to set role \"%s\" for user: %s"),
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2745 args[0], nicks[i]);
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2746 return PURPLE_CMD_RET_FAILED;
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2747 }
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2748
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2749 g_strfreev(nicks);
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2750 } else {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2751 jabber_chat_role_list(chat, args[0]);
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2752 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2753 return PURPLE_CMD_RET_OK;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2754 }
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2755
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2756 static PurpleCmdRet jabber_cmd_chat_invite(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2757 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2758 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2759 if(!args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2760 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2761
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2762 jabber_chat_invite(purple_conversation_get_gc(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2763 purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), args[1] ? args[1] : "",
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2764 args[0]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2765
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2766 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2767 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2768
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2769 static PurpleCmdRet jabber_cmd_chat_join(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2770 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2771 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2772 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2773 GHashTable *components;
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2774
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2775 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2776 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2777
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2778 components = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2779
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2780 g_hash_table_replace(components, "room", args[0]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2781 g_hash_table_replace(components, "server", chat->server);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2782 g_hash_table_replace(components, "handle", chat->handle);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2783 if(args[1])
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2784 g_hash_table_replace(components, "password", args[1]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2785
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2786 jabber_chat_join(purple_conversation_get_gc(conv), components);
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2787
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2788 g_hash_table_destroy(components);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2789 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2790 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2791
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2792 static PurpleCmdRet jabber_cmd_chat_kick(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2793 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2794 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2795 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2796
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2797 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2798 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2799
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2800 if(!jabber_chat_kick_user(chat, args[0], args[1])) {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2801 *error = g_strdup_printf(_("Unable to kick user %s"), args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2802 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2803 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2804
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2805 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2806 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2807
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2808 static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2809 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2810 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2811 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2812 char *who;
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2813
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2814 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2815 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2816
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2817 who = g_strdup_printf("%s@%s/%s", chat->room, chat->server, args[0]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2818
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2819 jabber_message_send_im(purple_conversation_get_gc(conv), who, args[1], 0);
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2820
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2821 g_free(who);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2822 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2823 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2824
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2825 static PurpleCmdRet jabber_cmd_ping(PurpleConversation *conv,
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2826 const char *cmd, char **args, char **error, void *data)
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2827 {
26089
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
2828 PurpleAccount *account;
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
2829 PurpleConnection *pc;
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
2830
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2831 if(!args || !args[0])
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2832 return PURPLE_CMD_RET_FAILED;
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2833
26089
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
2834 account = purple_conversation_get_account(conv);
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
2835 pc = purple_account_get_connection(account);
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
2836
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
2837 if(!jabber_ping_jid(purple_connection_get_protocol_data(pc), args[0])) {
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2838 *error = g_strdup_printf(_("Unable to ping user %s"), args[0]);
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2839 return PURPLE_CMD_RET_FAILED;
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2840 }
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2841
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2842 return PURPLE_CMD_RET_OK;
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2843 }
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2844
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2845 static gboolean _jabber_send_buzz(JabberStream *js, const char *username, char **error) {
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2846
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2847 JabberBuddy *jb;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2848 JabberBuddyResource *jbr;
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2849 PurpleConnection *gc = js->gc;
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
2850 PurpleBuddy *buddy =
25975
fcd84c6c9909 Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents: 25973
diff changeset
2851 purple_find_buddy(purple_connection_get_account(gc), username);
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
2852 const gchar *alias =
25975
fcd84c6c9909 Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents: 25973
diff changeset
2853 buddy ? purple_buddy_get_contact_alias(buddy) : username;
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2854
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2855 if(!username)
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2856 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2857
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2858 jb = jabber_buddy_find(js, username, FALSE);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2859 if(!jb) {
25975
fcd84c6c9909 Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents: 25973
diff changeset
2860 *error = g_strdup_printf(_("Unable to buzz, because there is nothing "
fcd84c6c9909 Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents: 25973
diff changeset
2861 "known about %s."), alias);
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2862 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2863 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2864
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2865 jbr = jabber_buddy_find_resource(jb, NULL);
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2866 if (!jbr) {
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
2867 *error = g_strdup_printf(_("Unable to buzz, because %s might be offline."),
25975
fcd84c6c9909 Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents: 25973
diff changeset
2868 alias);
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2869 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2870 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2871
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2872 if (jabber_resource_has_capability(jbr, XEP_0224_NAMESPACE)) {
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2873 xmlnode *buzz, *msg = xmlnode_new("message");
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2874 gchar *to;
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
2875
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2876 to = g_strdup_printf("%s/%s", username, jbr->name);
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2877 xmlnode_set_attrib(msg, "to", to);
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2878 g_free(to);
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2879
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2880 /* avoid offline storage */
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2881 xmlnode_set_attrib(msg, "type", "headline");
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2882
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2883 buzz = xmlnode_new_child(msg, "attention");
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2884 xmlnode_set_namespace(buzz, XEP_0224_NAMESPACE);
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2885
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2886 jabber_send(js, msg);
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2887 xmlnode_free(msg);
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2888
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2889 return TRUE;
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2890 } else {
25975
fcd84c6c9909 Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents: 25973
diff changeset
2891 *error = g_strdup_printf(_("Unable to buzz, because %s does "
26086
f26f6451c701 Use "does" here sounds more natural to me
Mark Doliner <markdoliner@pidgin.im>
parents: 26042
diff changeset
2892 "not support it or does not wish to receive buzzes now."), alias);
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2893 return FALSE;
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2894 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2895 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2896
17822
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2897 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv,
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2898 const char *cmd, char **args, char **error, void *data)
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2899 {
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2900 JabberStream *js = conv->account->gc->proto_data;
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2901 const gchar *who;
26048
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2902 gchar *description;
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2903 PurpleBuddy *buddy;
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2904 const char *alias;
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2905 PurpleAttentionType *attn =
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2906 purple_get_attention_type_from_code(conv->account, 0);
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
2907
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2908 if (!args || !args[0]) {
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2909 /* use the buddy from conversation, if it's a one-to-one conversation */
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2910 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2911 who = purple_conversation_get_name(conv);
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2912 } else {
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2913 return PURPLE_CMD_RET_FAILED;
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2914 }
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2915 } else {
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2916 who = args[0];
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
2917 }
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
2918
26048
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2919 buddy = purple_find_buddy(conv->account, who);
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2920 if (buddy != NULL)
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2921 alias = purple_buddy_get_contact_alias(buddy);
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2922 else
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2923 alias = who;
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2924
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2925 description =
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2926 g_strdup_printf(purple_attention_type_get_outgoing_desc(attn), alias);
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2927 purple_conversation_attention(conv, who, 0, PURPLE_MESSAGE_SEND, time(NULL));
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2928 purple_conversation_write(conv, NULL, description,
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2929 PURPLE_MESSAGE_NOTIFY | PURPLE_MESSAGE_SYSTEM, time(NULL));
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2930 g_free(description);
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
2931 return _jabber_send_buzz(js, who, error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED;
17822
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2932 }
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2933
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2934 GList *jabber_attention_types(PurpleAccount *account)
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2935 {
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2936 static GList *types = NULL;
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2937
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2938 if (!types) {
22225
6cd802a8c5ad This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22155
diff changeset
2939 types = g_list_append(types, purple_attention_type_new("Buzz", _("Buzz"),
6cd802a8c5ad This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22155
diff changeset
2940 _("%s has buzzed you!"), _("Buzzing %s...")));
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2941 }
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2942
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2943 return types;
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2944 }
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2945
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2946 gboolean jabber_send_attention(PurpleConnection *gc, const char *username, guint code)
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2947 {
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2948 JabberStream *js = gc->proto_data;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2949 gchar *error = NULL;
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2950
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2951 if (!_jabber_send_buzz(js, username, &error)) {
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2952 purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)");
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2953 g_free(error);
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2954 return FALSE;
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2955 }
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2956
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2957 return TRUE;
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2958 }
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2959
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2960
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
2961 gboolean jabber_offline_message(const PurpleBuddy *buddy)
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
2962 {
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
2963 return TRUE;
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
2964 }
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
2965
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2966 #ifdef USE_VV
26668
ef06285f3b64 Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents: 26666
diff changeset
2967 gboolean
ef06285f3b64 Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents: 26666
diff changeset
2968 jabber_audio_enabled(JabberStream *js, const char *namespace)
26665
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2969 {
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2970 PurpleMediaManager *manager = purple_media_manager_get();
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2971 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager);
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2972
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2973 return (caps & (PURPLE_MEDIA_CAPS_AUDIO | PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION));
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2974 }
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2975
27202
5244a5510e0e Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents: 27193
diff changeset
2976 gboolean
26668
ef06285f3b64 Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents: 26666
diff changeset
2977 jabber_video_enabled(JabberStream *js, const char *namespace)
26665
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2978 {
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2979 PurpleMediaManager *manager = purple_media_manager_get();
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2980 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager);
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2981
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2982 return (caps & (PURPLE_MEDIA_CAPS_VIDEO | PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION));
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2983 }
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
2984
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2985 typedef struct {
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
2986 PurpleAccount *account;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2987 gchar *who;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2988 PurpleMediaSessionType type;
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2989
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2990 } JabberMediaRequest;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2991
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2992 static void
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2993 jabber_media_cancel_cb(JabberMediaRequest *request,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2994 PurpleRequestFields *fields)
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2995 {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2996 g_free(request->who);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2997 g_free(request);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2998 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
2999
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3000 static void
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3001 jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestFields *fields)
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3002 {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3003 PurpleRequestField *field =
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3004 purple_request_fields_get_field(fields, "resource");
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3005 int selected_id = purple_request_field_choice_get_value(field);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3006 GList *labels = purple_request_field_choice_get_labels(field);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3007 gchar *who = g_strdup_printf("%s/%s", request->who,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3008 (gchar*)g_list_nth_data(labels, selected_id));
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3009 jabber_initiate_media(request->account, who, request->type);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3010
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3011 g_free(who);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3012 g_free(request->who);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3013 g_free(request);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3014 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3015 #endif
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3016
26495
52846ebe1c7d Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents: 26455
diff changeset
3017 gboolean
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
3018 jabber_initiate_media(PurpleAccount *account, const char *who,
26108
8d0fd2f195aa Changed PurpleMediaStreamType to PurpleMediaSessionType.
Michael Ruprecht <maiku@pidgin.im>
parents: 26106
diff changeset
3019 PurpleMediaSessionType type)
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
3020 {
26454
94130b583e0b Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents: 26399
diff changeset
3021 #ifdef USE_VV
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3022 JabberStream *js = (JabberStream *)
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3023 purple_account_get_connection(account)->proto_data;
26205
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3024 JabberBuddy *jb;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3025 JabberBuddyResource *jbr = NULL;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3026 char *resource;
26205
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3027
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3028 if (!js) {
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3029 purple_debug_error("jabber",
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3030 "jabber_initiate_media: NULL stream\n");
26495
52846ebe1c7d Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents: 26455
diff changeset
3031 return FALSE;
26205
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3032 }
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3033
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3034
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3035 if((resource = jabber_get_resource(who)) != NULL) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3036 /* they've specified a resource, no need to ask or
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3037 * default or anything, just do it */
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3038
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3039 jb = jabber_buddy_find(js, who, FALSE);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3040 jbr = jabber_buddy_find_resource(jb, resource);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3041 g_free(resource);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3042
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3043 if (type & PURPLE_MEDIA_AUDIO &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3044 !jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3045 JINGLE_APP_RTP_SUPPORT_AUDIO) &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3046 jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3047 GOOGLE_VOICE_CAP))
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3048 return jabber_google_session_initiate(js, who, type);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3049 else
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3050 return jingle_rtp_initiate_media(js, who, type);
26205
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3051 }
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3052
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3053 jb = jabber_buddy_find(js, who, FALSE);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3054
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3055 if(!jb || !jb->resources) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3056 /* no resources online, we're trying to initiate with someone
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3057 * whose presence we're not subscribed to, or
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3058 * someone who is offline. Let's inform the user */
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3059 char *msg;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3060
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3061 if(!jb) {
26647
89bcc7bce53e Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26643
diff changeset
3062 msg = g_strdup_printf(_("Unable to initiate media with %s: invalid JID"), who);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3063 } else if(jb->subscription & JABBER_SUB_TO) {
26647
89bcc7bce53e Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26643
diff changeset
3064 msg = g_strdup_printf(_("Unable to initiate media with %s: user is not online"), who);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3065 } else {
26647
89bcc7bce53e Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26643
diff changeset
3066 msg = g_strdup_printf(_("Unable to initiate media with %s: not subscribed to user presence"), who);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3067 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3068
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3069 purple_notify_error(account, _("Media Initiation Failed"),
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3070 _("Media Initiation Failed"), msg);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3071 g_free(msg);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3072 return FALSE;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3073 } else if(!jb->resources->next) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3074 /* only 1 resource online (probably our most common case)
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3075 * so no need to ask who to initiate with */
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3076 gchar *name;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3077 gboolean result;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3078 jbr = jb->resources->data;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3079 name = g_strdup_printf("%s/%s", who, jbr->name);
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3080 result = jabber_initiate_media(account, name, type);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3081 g_free(name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3082 return result;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3083 } else {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3084 /* we've got multiple resources,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3085 * we need to pick one to initiate with */
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3086 GList *l;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3087 char *msg;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3088 PurpleRequestFields *fields;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3089 PurpleRequestField *field = purple_request_field_choice_new(
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3090 "resource", _("Resource"), 0);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3091 PurpleRequestFieldGroup *group;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3092 JabberMediaRequest *request;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3093
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3094 for(l = jb->resources; l; l = l->next)
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3095 {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3096 JabberBuddyResource *ljbr = l->data;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3097 PurpleMediaCaps caps;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3098 gchar *name;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3099 name = g_strdup_printf("%s/%s", who, ljbr->name);
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3100 caps = jabber_get_media_caps(account, name);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3101 g_free(name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3102
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3103 if ((type & PURPLE_MEDIA_AUDIO) &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3104 (type & PURPLE_MEDIA_VIDEO)) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3105 if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3106 jbr = ljbr;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3107 purple_request_field_choice_add(
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3108 field, jbr->name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3109 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3110 } else if (type & (PURPLE_MEDIA_AUDIO) &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3111 (caps & PURPLE_MEDIA_CAPS_AUDIO)) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3112 jbr = ljbr;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3113 purple_request_field_choice_add(
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3114 field, jbr->name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3115 }else if (type & (PURPLE_MEDIA_VIDEO) &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3116 (caps & PURPLE_MEDIA_CAPS_VIDEO)) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3117 jbr = ljbr;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3118 purple_request_field_choice_add(
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3119 field, jbr->name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3120 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3121 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3122
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3123 if (jbr == NULL) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3124 purple_debug_error("jabber",
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3125 "No resources available\n");
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3126 return FALSE;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3127 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3128
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3129 if (g_list_length(purple_request_field_choice_get_labels(
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3130 field)) <= 1) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3131 gchar *name;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3132 gboolean result;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3133 purple_request_field_destroy(field);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3134 name = g_strdup_printf("%s/%s", who, jbr->name);
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3135 result = jabber_initiate_media(account, name, type);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3136 g_free(name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3137 return result;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3138 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3139
26647
89bcc7bce53e Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26643
diff changeset
3140 msg = g_strdup_printf(_("Please select the resource of %s with which you would like to start a media session."), who);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3141 fields = purple_request_fields_new();
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3142 group = purple_request_field_group_new(NULL);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3143 request = g_new0(JabberMediaRequest, 1);
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3144 request->account = account;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3145 request->who = g_strdup(who);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3146 request->type = type;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3147
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3148 purple_request_field_group_add_field(group, field);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3149 purple_request_fields_add_group(fields, group);
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3150 purple_request_fields(account, _("Select a Resource"), msg,
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3151 NULL, fields, _("Initiate Media"),
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3152 G_CALLBACK(jabber_media_ok_cb), _("Cancel"),
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3153 G_CALLBACK(jabber_media_cancel_cb),
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3154 account, who, NULL, request);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3155
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3156 g_free(msg);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3157 return TRUE;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3158 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3159 #endif
26495
52846ebe1c7d Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents: 26455
diff changeset
3160 return FALSE;
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
3161 }
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
3162
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3163 PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who)
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
3164 {
26454
94130b583e0b Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents: 26399
diff changeset
3165 #ifdef USE_VV
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3166 JabberStream *js = (JabberStream *)
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3167 purple_account_get_connection(account)->proto_data;
23715
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
3168 JabberBuddy *jb;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3169 JabberBuddyResource *jbr;
26316
950c0d491c0d Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26292
diff changeset
3170 PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3171 gchar *resource;
23715
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
3172
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
3173 if (!js) {
26632
e4fb60cb05a7 Demote debug error to info.
Michael Ruprecht <maiku@pidgin.im>
parents: 26495
diff changeset
3174 purple_debug_info("jabber",
e4fb60cb05a7 Demote debug error to info.
Michael Ruprecht <maiku@pidgin.im>
parents: 26495
diff changeset
3175 "jabber_can_do_media: NULL stream\n");
23715
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
3176 return FALSE;
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
3177 }
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
3178
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3179 if ((resource = jabber_get_resource(who)) != NULL) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3180 /* they've specified a resource, no need to ask or
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3181 * default or anything, just do it */
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3182
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3183 jb = jabber_buddy_find(js, who, FALSE);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3184 jbr = jabber_buddy_find_resource(jb, resource);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3185 g_free(resource);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3186
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3187 if (!jbr) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3188 purple_debug_error("jabber", "jabber_get_media_caps:"
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3189 " Can't find resource %s\n", who);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3190 return caps;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3191 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3192
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3193 if (jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3194 JINGLE_APP_RTP_SUPPORT_AUDIO))
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3195 caps |= PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION |
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3196 PURPLE_MEDIA_CAPS_AUDIO;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3197 if (jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3198 JINGLE_APP_RTP_SUPPORT_VIDEO))
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3199 caps |= PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION |
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3200 PURPLE_MEDIA_CAPS_VIDEO;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3201 if (caps & PURPLE_MEDIA_CAPS_AUDIO && caps &
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3202 PURPLE_MEDIA_CAPS_VIDEO)
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3203 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3204 if (caps != PURPLE_MEDIA_CAPS_NONE) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3205 if (!jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3206 JINGLE_TRANSPORT_ICEUDP) &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3207 !jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3208 JINGLE_TRANSPORT_RAWUDP)) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3209 purple_debug_info("jingle-rtp", "Buddy doesn't "
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3210 "support the same transport types\n");
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3211 caps = PURPLE_MEDIA_CAPS_NONE;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3212 } else
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3213 caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION |
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3214 PURPLE_MEDIA_CAPS_CHANGE_DIRECTION;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3215 }
27202
5244a5510e0e Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents: 27193
diff changeset
3216 if (jabber_resource_has_capability(jbr, GOOGLE_VOICE_CAP)) {
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3217 caps |= PURPLE_MEDIA_CAPS_AUDIO;
27202
5244a5510e0e Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents: 27193
diff changeset
3218 if (jabber_resource_has_capability(jbr,
5244a5510e0e Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents: 27193
diff changeset
3219 GOOGLE_VIDEO_CAP))
5244a5510e0e Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents: 27193
diff changeset
3220 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
5244a5510e0e Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents: 27193
diff changeset
3221 }
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3222 return caps;
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
3223 }
26170
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
3224
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3225 jb = jabber_buddy_find(js, who, FALSE);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3226
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3227 if(!jb || !jb->resources) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3228 /* no resources online, we're trying to get caps for someone
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3229 * whose presence we're not subscribed to, or
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3230 * someone who is offline. */
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3231 return caps;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3232 } else if(!jb->resources->next) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3233 /* only 1 resource online (probably our most common case) */
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3234 gchar *name;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3235 jbr = jb->resources->data;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3236 name = g_strdup_printf("%s/%s", who, jbr->name);
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3237 caps = jabber_get_media_caps(account, name);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3238 g_free(name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3239 } else {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3240 /* we've got multiple resources, combine their caps */
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3241 GList *l;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3242
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3243 for(l = jb->resources; l; l = l->next)
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3244 {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3245 gchar *name;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3246 jbr = l->data;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3247 name = g_strdup_printf("%s/%s", who, jbr->name);
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3248 caps |= jabber_get_media_caps(account, name);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3249 g_free(name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3250 }
26170
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
3251 }
26316
950c0d491c0d Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26292
diff changeset
3252
950c0d491c0d Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26292
diff changeset
3253 return caps;
26454
94130b583e0b Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents: 26399
diff changeset
3254 #else
94130b583e0b Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents: 26399
diff changeset
3255 return PURPLE_MEDIA_CAPS_NONE;
94130b583e0b Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents: 26399
diff changeset
3256 #endif
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
3257 }
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
3258
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
3259 void jabber_register_commands(void)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3260 {
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3261 PurpleCmdId id;
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3262 id = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3263 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3264 "prpl-jabber", jabber_cmd_chat_config,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3265 _("config: Configure a chat room."), NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3266 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3267
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3268 id = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3269 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3270 "prpl-jabber", jabber_cmd_chat_config,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3271 _("configure: Configure a chat room."), NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3272 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3273
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3274 id = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3275 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3276 "prpl-jabber", jabber_cmd_chat_nick,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3277 _("nick &lt;new nickname&gt;: Change your nickname."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3278 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3279 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3280
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3281 id = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3282 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3283 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3284 jabber_cmd_chat_part, _("part [room]: Leave the room."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3285 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3286 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3287
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3288 id = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3289 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3290 "prpl-jabber", jabber_cmd_chat_register,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3291 _("register: Register with a chat room."), NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3292 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3293
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3294 /* XXX: there needs to be a core /topic cmd, methinks */
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3295 id = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3296 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3297 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3298 jabber_cmd_chat_topic,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3299 _("topic [new topic]: View or change the topic."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3300 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3301 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3302
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3303 id = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3304 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3305 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3306 jabber_cmd_chat_ban,
22759
1ab25e736b3d Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents: 22587
diff changeset
3307 _("ban &lt;user&gt; [reason]: Ban a user from the room."),
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3308 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3309 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3310
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3311 id = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3312 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3313 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
3314 jabber_cmd_chat_affiliate,
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
3315 _("affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get the users with an affiliation or set users' affiliation with the room."),
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
3316 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3317 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3318
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3319 id = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3320 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3321 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
3322 jabber_cmd_chat_role,
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
3323 _("role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the users with an role or set users' role with the room."),
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
3324 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3325 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3326
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3327 id = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3328 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3329 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3330 jabber_cmd_chat_invite,
11158
2660ab8f8a14 [gaim-migrate @ 13245]
Etan Reisner <deryni@pidgin.im>
parents: 11033
diff changeset
3331 _("invite &lt;user&gt; [message]: Invite a user to the room."),
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3332 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3333 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3334
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3335 id = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3336 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3337 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3338 jabber_cmd_chat_join,
22759
1ab25e736b3d Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents: 22587
diff changeset
3339 _("join: &lt;room&gt; [password]: Join a chat on this server."),
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3340 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3341 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3342
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3343 id = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3344 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3345 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3346 jabber_cmd_chat_kick,
22759
1ab25e736b3d Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents: 22587
diff changeset
3347 _("kick &lt;user&gt; [reason]: Kick a user from the room."),
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3348 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3349 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3350
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3351 id = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3352 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3353 "prpl-jabber", jabber_cmd_chat_msg,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3354 _("msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3355 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3356 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3357
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3358 id = purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL,
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
3359 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM |
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
3360 PURPLE_CMD_FLAG_PRPL_ONLY,
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
3361 "prpl-jabber", jabber_cmd_ping,
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
3362 _("ping &lt;jid&gt;: Ping a user/component/server."),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
3363 NULL);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3364 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3365
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3366 id = purple_cmd_register("buzz", "w", PURPLE_CMD_P_PRPL,
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
3367 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY |
24429
31217eabccee Register the /buzz command using PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS.
Marcus Lundblad <malu@pidgin.im>
parents: 24428
diff changeset
3368 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
17822
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
3369 "prpl-jabber", jabber_cmd_buzz,
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
3370 _("buzz: Buzz a user to get their attention"), NULL);
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3371 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3372
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3373 void jabber_unregister_commands(void)
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3374 {
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3375 while (jabber_cmds != NULL) {
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3376 purple_cmd_unregister(GPOINTER_TO_UINT(jabber_cmds->data));
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3377 jabber_cmds = g_slist_delete_link(jabber_cmds, jabber_cmds);
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3378 }
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3379 }
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3380
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3381 /* IPC functions */
23598
54fe227bf99e * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23597
diff changeset
3382
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3383 /**
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3384 * IPC function for determining if a contact supports a certain feature.
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3385 *
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3386 * @param account The PurpleAccount
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3387 * @param jid The full JID of the contact.
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3388 * @param feature The feature's namespace.
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3389 *
23598
54fe227bf99e * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23597
diff changeset
3390 * @return TRUE if supports feature; else FALSE.
54fe227bf99e * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23597
diff changeset
3391 */
23597
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3392 static gboolean
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3393 jabber_ipc_contact_has_feature(PurpleAccount *account, const gchar *jid,
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3394 const gchar *feature)
23597
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3395 {
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3396 PurpleConnection *gc = purple_account_get_connection(account);
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3397 JabberStream *js;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3398 JabberBuddy *jb;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3399 JabberBuddyResource *jbr;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3400 gchar *resource;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3401
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3402 if (!purple_account_is_connected(account))
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3403 return FALSE;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3404 js = gc->proto_data;
24721
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3405
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
3406 if (!(resource = jabber_get_resource(jid)) ||
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3407 !(jb = jabber_buddy_find(js, jid, FALSE)) ||
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3408 !(jbr = jabber_buddy_find_resource(jb, resource))) {
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3409 g_free(resource);
24721
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3410 return FALSE;
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3411 }
24721
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3412
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3413 g_free(resource);
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3414
24802
eb481e98ac6a Sprinkle jabber_resource_has_capability in places
Paul Aurich <darkrain42@pidgin.im>
parents: 24737
diff changeset
3415 return jabber_resource_has_capability(jbr, feature);
23596
164fbee281c1 * fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23586
diff changeset
3416 }
164fbee281c1 * fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23586
diff changeset
3417
23599
ac402ffdcbec * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23598
diff changeset
3418 static void
24721
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3419 jabber_ipc_add_feature(const gchar *feature)
23599
ac402ffdcbec * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23598
diff changeset
3420 {
24721
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3421 if (!feature)
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3422 return;
23600
ca657199f39a * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23599
diff changeset
3423 jabber_add_feature(feature, 0);
24721
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3424
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3425 /* send presence with new caps info for all connected accounts */
23601
f7e44345f4b9 * implemented jabber_caps_broadcast_change() and finished jabber_ipc_add_feature() IPC function
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23600
diff changeset
3426 jabber_caps_broadcast_change();
23599
ac402ffdcbec * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23598
diff changeset
3427 }
ac402ffdcbec * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23598
diff changeset
3428
16302
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
3429 void
eb633ebf84f2 This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@pidgin.im>
parents: 16180
diff changeset
3430 jabber_init_plugin(PurplePlugin *plugin)
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
3431 {
27286
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3432 GHashTable *ui_info = purple_core_get_ui_info();
27293
5234a1fe1531 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <darkrain42@pidgin.im>
parents: 27292
diff changeset
3433 const gchar *ui_type;
27286
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3434 const gchar *type = "pc"; /* default client type, if unknown or
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3435 unspecified */
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3436
27293
5234a1fe1531 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <darkrain42@pidgin.im>
parents: 27292
diff changeset
3437 jabber_plugin = plugin;
5234a1fe1531 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <darkrain42@pidgin.im>
parents: 27292
diff changeset
3438
5234a1fe1531 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <darkrain42@pidgin.im>
parents: 27292
diff changeset
3439 ui_type = ui_info ? g_hash_table_lookup(ui_info, "client_type") : NULL;
27286
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3440 if (ui_type) {
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3441 if (strcmp(ui_type, "pc") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3442 strcmp(ui_type, "console") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3443 strcmp(ui_type, "phone") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3444 strcmp(ui_type, "handheld") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3445 strcmp(ui_type, "web") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3446 strcmp(ui_type, "bot") == 0) {
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3447 type = ui_type;
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3448 }
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3449 }
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3450
27286
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3451 jabber_add_identity("client", type, NULL, PACKAGE);
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3452
23597
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3453 /* initialize jabber_features list */
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3454 jabber_add_feature("jabber:iq:last", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3455 jabber_add_feature("jabber:iq:oob", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3456 jabber_add_feature("jabber:iq:time", 0);
25798
7fabdc4d3a2b Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <darkrain42@pidgin.im>
parents: 25797
diff changeset
3457 jabber_add_feature("urn:xmpp:time", 0);
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3458 jabber_add_feature("jabber:iq:version", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3459 jabber_add_feature("jabber:x:conference", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3460 jabber_add_feature("http://jabber.org/protocol/bytestreams", 0);
25798
7fabdc4d3a2b Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <darkrain42@pidgin.im>
parents: 25797
diff changeset
3461 jabber_add_feature("http://jabber.org/protocol/caps", 0);
7fabdc4d3a2b Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <darkrain42@pidgin.im>
parents: 25797
diff changeset
3462 jabber_add_feature("http://jabber.org/protocol/chatstates", 0);
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3463 jabber_add_feature("http://jabber.org/protocol/disco#info", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3464 jabber_add_feature("http://jabber.org/protocol/disco#items", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3465 jabber_add_feature("http://jabber.org/protocol/ibb", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3466 jabber_add_feature("http://jabber.org/protocol/muc", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3467 jabber_add_feature("http://jabber.org/protocol/muc#user", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3468 jabber_add_feature("http://jabber.org/protocol/si", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3469 jabber_add_feature("http://jabber.org/protocol/si/profile/file-transfer", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3470 jabber_add_feature("http://jabber.org/protocol/xhtml-im", 0);
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3471 jabber_add_feature("urn:xmpp:ping", 0);
26659
918350344dc7 Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents: 26658
diff changeset
3472
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3473 /* Buzz/Attention */
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3474 jabber_add_feature(XEP_0224_NAMESPACE, jabber_buzz_isenabled);
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3475
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3476 /* Bits Of Binary */
27110
05ca719b901b Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <malu@pidgin.im>
parents: 27103
diff changeset
3477 jabber_add_feature(XEP_0231_NAMESPACE, 0);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3478
26659
918350344dc7 Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents: 26658
diff changeset
3479 /* Jingle features! */
918350344dc7 Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents: 26658
diff changeset
3480 jabber_add_feature(JINGLE, 0);
918350344dc7 Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents: 26658
diff changeset
3481 jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0);
26666
4c95bdba5627 Advertise ICEUDP only when libnice is available
Paul Aurich <darkrain42@pidgin.im>
parents: 26665
diff changeset
3482
26665
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3483 #ifdef USE_VV
26668
ef06285f3b64 Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents: 26666
diff changeset
3484 jabber_add_feature("http://www.google.com/xmpp/protocol/session", jabber_audio_enabled);
ef06285f3b64 Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents: 26666
diff changeset
3485 jabber_add_feature("http://www.google.com/xmpp/protocol/voice/v1", jabber_audio_enabled);
ef06285f3b64 Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents: 26666
diff changeset
3486 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_AUDIO, jabber_audio_enabled);
ef06285f3b64 Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents: 26666
diff changeset
3487 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled);
26960
6ab1af0e17f7 merge of '8482365bb2ecec16d6e7161069a6000c330727e8'
Paul Aurich <darkrain42@pidgin.im>
parents: 26959 26675
diff changeset
3488 jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0);
26665
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3489 #endif
26659
918350344dc7 Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents: 26658
diff changeset
3490
23597
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3491 /* IPC functions */
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3492 purple_plugin_ipc_register(plugin, "contact_has_feature", PURPLE_CALLBACK(jabber_ipc_contact_has_feature),
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3493 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER,
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3494 purple_value_new(PURPLE_TYPE_BOOLEAN), 3,
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3495 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT),
23597
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3496 purple_value_new(PURPLE_TYPE_STRING),
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3497 purple_value_new(PURPLE_TYPE_STRING));
27103
815af6acd59b Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents: 27028
diff changeset
3498
23600
ca657199f39a * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23599
diff changeset
3499 purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature),
ca657199f39a * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23599
diff changeset
3500 purple_marshal_VOID__POINTER,
ca657199f39a * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23599
diff changeset
3501 NULL, 1,
ca657199f39a * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23599
diff changeset
3502 purple_value_new(PURPLE_TYPE_STRING));
27223
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3503
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3504 /* Modifying these? Look at libxmpp.c:load_plugin for the signal versions */
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3505 purple_plugin_ipc_register(plugin, "register_namespace_watcher",
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3506 PURPLE_CALLBACK(jabber_iq_signal_register),
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3507 purple_marshal_VOID__POINTER_POINTER,
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3508 NULL, 2,
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3509 purple_value_new(PURPLE_TYPE_STRING), /* node */
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3510 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3511
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3512 purple_plugin_ipc_register(plugin, "unregister_namespace_watcher",
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3513 PURPLE_CALLBACK(jabber_iq_signal_unregister),
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3514 purple_marshal_VOID__POINTER_POINTER,
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3515 NULL, 2,
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3516 purple_value_new(PURPLE_TYPE_STRING), /* node */
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3517 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
3518 }
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3519
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3520 void
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3521 jabber_uninit_plugin(void)
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3522 {
27103
815af6acd59b Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents: 27028
diff changeset
3523 purple_plugin_ipc_unregister_all(jabber_plugin);
815af6acd59b Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents: 27028
diff changeset
3524
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3525 jabber_features_destroy();
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3526 jabber_identities_destroy();
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3527 }

mercurial