libpurple/protocols/jabber/jabber.c

Sat, 14 Aug 2010 04:39:07 +0000

author
Paul Aurich <darkrain42@pidgin.im>
date
Sat, 14 Aug 2010 04:39:07 +0000
changeset 30687
93133347cbcf
parent 30587
dacecb57b543
child 30688
44ebcba31f96
permissions
-rw-r--r--

< QuLogic> on line 208 of jabber.c, should that be *dot?
< darkrain42> Looks like it to me.

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 *
28322
ac8fec1d2234 Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 28266
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
ac8fec1d2234 Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 28266
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
ac8fec1d2234 Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents: 28266
diff changeset
6 * source distribution.
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * 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
10 * the Free Software Foundation; either version 2 of the License, or
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * (at your option) any later version.
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
12 *
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 * GNU General Public License for more details.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 * 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
20 * 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
21 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
22 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
23 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
24
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
25 #include "account.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
26 #include "accountopt.h"
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
27 #include "blist.h"
27286
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
28 #include "core.h"
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
29 #include "cmds.h"
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
30 #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
31 #include "conversation.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
32 #include "debug.h"
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
33 #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
34 #include "imgstore.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
35 #include "message.h"
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
36 #include "notify.h"
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents: 8591
diff changeset
37 #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
38 #include "privacy.h"
14175
2bc5a80c5071 [gaim-migrate @ 16747]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
39 #include "proxy.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
40 #include "prpl.h"
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
41 #include "request.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
42 #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
43 #include "status.h"
7095
17d2b54254f8 [gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents: 7072
diff changeset
44 #include "util.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9917
diff changeset
45 #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
46 #include "xmlnode.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
47
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
48 #include "auth.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
49 #include "buddy.h"
26072
e8fce2b2b9fe propagate from branch 'im.pidgin.pidgin' (head b4bbfacd7f2050d87deeda12ea7bb3adc3608cb7)
Paul Aurich <darkrain42@pidgin.im>
parents: 26042 25804
diff changeset
50 #include "caps.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
51 #include "chat.h"
23626
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
52 #include "data.h"
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
53 #include "disco.h"
15265
a5b0ab58b05d [gaim-migrate @ 17993]
Sean Egan <seanegan@pidgin.im>
parents: 15237
diff changeset
54 #include "google.h"
28879
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
55 #include "ibb.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
56 #include "iq.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
57 #include "jutil.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
58 #include "message.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
59 #include "parser.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
60 #include "presence.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
61 #include "jabber.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
62 #include "roster.h"
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
63 #include "ping.h"
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9414
diff changeset
64 #include "si.h"
29412
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
65 #include "usermood.h"
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
66 #include "xdata.h"
17768
7be011945a1b added preliminary frame for pep-support
Andreas Monitzer <am@adiumx.com>
parents: 17767
diff changeset
67 #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
68 #include "adhoccommands.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
69
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
70 #include "jingle/jingle.h"
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
71 #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
72
29771
b276f3e127af jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents: 29749
diff changeset
73 #define PING_TIMEOUT 60
30056
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
74 /* Send a whitespace keepalive to the server if we haven't sent
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
75 * anything in the last 120 seconds
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
76 */
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
77 #define DEFAULT_INACTIVITY_TIME 120
29771
b276f3e127af jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents: 29749
diff changeset
78
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
79 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
80 GList *jabber_identities = NULL;
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
81
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
82 static GHashTable *jabber_cmds = NULL; /* PurplePlugin * => GSList of ids */
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
83
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
84 static gint plugin_ref = 0;
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
85
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
86 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
87 static void try_srv_connect(JabberStream *js);
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
88
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
89 static void jabber_stream_init(JabberStream *js)
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
90 {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
91 char *open_stream;
3340
7e59a209931d [gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3337
diff changeset
92
29865
3a23d291568e jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents: 29864
diff changeset
93 if (js->stream_id) {
3a23d291568e jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents: 29864
diff changeset
94 g_free(js->stream_id);
3a23d291568e jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents: 29864
diff changeset
95 js->stream_id = NULL;
3a23d291568e jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents: 29864
diff changeset
96 }
3a23d291568e jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents: 29864
diff changeset
97
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
98 open_stream = g_strdup_printf("<stream:stream to='%s' "
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
99 "xmlns='" NS_XMPP_CLIENT "' "
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
100 "xmlns:stream='" NS_XMPP_STREAMS "' "
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
101 "version='1.0'>",
7291
3d8a237f36cb [gaim-migrate @ 7872]
Nathan Walp <nwalp@pidgin.im>
parents: 7274
diff changeset
102 js->user->domain);
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
103 /* setup the parser fresh for each stream */
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
104 jabber_parser_setup(js);
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
105 jabber_send_raw(js, open_stream, -1);
14062
dd8d7eb8fa76 [gaim-migrate @ 16585]
Ethan Blanton <elb@pidgin.im>
parents: 14043
diff changeset
106 js->reinit = FALSE;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
107 g_free(open_stream);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
108 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
109
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
110 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
111 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
112 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
113 xmlnode *packet, gpointer data)
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
114 {
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
115 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
116 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
117 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
118 jabber_unregister_account_cb(js);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
119 } else {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
120 purple_connection_error_reason(js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
121 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
122 ("Error initializing session"));
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
123 }
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
124 }
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
125
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
126 static void jabber_session_init(JabberStream *js)
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
127 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
128 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
129 xmlnode *session;
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
130
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
131 jabber_iq_set_callback(iq, jabber_session_initialized_cb, NULL);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
132
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
133 session = xmlnode_new_child(iq->node, "session");
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
134 xmlnode_set_namespace(session, NS_XMPP_SESSION);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
135
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
136 jabber_iq_send(iq);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
137 }
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
138
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
139 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
140 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
141 xmlnode *packet, gpointer data)
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
142 {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
143 xmlnode *bind;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
144
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
145 if (type == JABBER_IQ_RESULT &&
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
146 (bind = xmlnode_get_child_with_namespace(packet, "bind", NS_XMPP_BIND))) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
147 xmlnode *jid;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
148 char *full_jid;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
149 if((jid = xmlnode_get_child(bind, "jid")) && (full_jid = xmlnode_get_data(jid))) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
150 jabber_id_free(js->user);
28070
df31e9d5ad88 jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents: 28064
diff changeset
151
df31e9d5ad88 jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents: 28064
diff changeset
152 js->user = jabber_id_new(full_jid);
df31e9d5ad88 jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents: 28064
diff changeset
153 if (js->user == NULL) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
154 purple_connection_error_reason(js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
155 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
156 _("Invalid response from server"));
28070
df31e9d5ad88 jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents: 28064
diff changeset
157 g_free(full_jid);
df31e9d5ad88 jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents: 28064
diff changeset
158 return;
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
159 }
28070
df31e9d5ad88 jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents: 28064
diff changeset
160
28071
a0706162fefd jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents: 28070
diff changeset
161 js->user_jb = jabber_buddy_find(js, full_jid, TRUE);
a0706162fefd jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents: 28070
diff changeset
162 js->user_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
163
77ba88ca54a6 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <datallah@pidgin.im>
parents: 24254
diff changeset
164 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
165
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10490
diff changeset
166 g_free(full_jid);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
167 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
168 } else {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
169 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
170 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
171 purple_connection_error_reason(js->gc, reason, msg);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
172 g_free(msg);
30013
e9b97a2ae2a6 jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <darkrain42@pidgin.im>
parents: 29979
diff changeset
173
e9b97a2ae2a6 jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <darkrain42@pidgin.im>
parents: 29979
diff changeset
174 return;
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
175 }
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
176
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
177 jabber_session_init(js);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
178 }
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
179
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
180 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
181 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
182 *dot = NULL;
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
183
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
184 /* 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
185 if (input == NULL || *input == '\0')
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
186 return NULL;
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
187
24833
d2257d9b0ffa Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24828
diff changeset
188 if (strstr(input, "__HOSTNAME__") == NULL)
24850
0237007e4424 darkrain again
Ka-Hing Cheung <khc@pidgin.im>
parents: 24833
diff changeset
189 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
190
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
191 /* Replace __HOSTNAME__ with hostname */
24824
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
192 if (gethostname(hostname, sizeof(hostname) - 1)) {
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
193 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
194 /* 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
195 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
196 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
197 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
198 instead
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
199 */
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
200 strcpy(hostname, "localhost");
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
201 }
24824
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
202 hostname[sizeof(hostname) - 1] = '\0';
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
203
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
204 /* 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
205 * 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
206 * 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
207 if((dot = strchr(hostname, '.')))
30687
93133347cbcf < QuLogic> on line 208 of jabber.c, should that be *dot?
Paul Aurich <darkrain42@pidgin.im>
parents: 30587
diff changeset
208 *dot = '\0';
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
209
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
210 return purple_strreplace(input, "__HOSTNAME__", hostname);
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
211 }
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
212
30156
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
213 static gboolean
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
214 jabber_process_starttls(JabberStream *js, xmlnode *packet)
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
215 {
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
216 PurpleAccount *account;
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
217 xmlnode *starttls;
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
218
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
219 account = purple_connection_get_account(js->gc);
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
220
30458
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
221 if(purple_ssl_is_supported()) {
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
222 jabber_send_raw(js,
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
223 "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1);
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
224 return TRUE;
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
225 }
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
226
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
227 starttls = xmlnode_get_child(packet, "starttls");
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
228 if(xmlnode_get_child(starttls, "required")) {
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
229 purple_connection_error_reason(js->gc,
30156
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
230 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
231 _("Server requires TLS/SSL, but no TLS/SSL support was found."));
30458
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
232 return TRUE;
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
233 }
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
234
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
235 if(purple_account_get_bool(account, "require_tls", JABBER_DEFAULT_REQUIRE_TLS)) {
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
236 purple_connection_error_reason(js->gc,
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
237 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
30156
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
238 _("You require encryption, but no TLS/SSL support was found."));
30458
66c86178c6fc We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents: 30448
diff changeset
239 return TRUE;
30156
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
240 }
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
241
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
242 return FALSE;
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
243 }
6ec7dbe44c83 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents: 30155
diff changeset
244
23618
8497c2f5e62d * using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23613
diff changeset
245 void jabber_stream_features_parse(JabberStream *js, xmlnode *packet)
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
246 {
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
247 if(xmlnode_get_child(packet, "starttls")) {
28623
4f7f9d7bb23d jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 28610
diff changeset
248 if(jabber_process_starttls(js, packet)) {
4f7f9d7bb23d jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 28610
diff changeset
249 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
250 return;
28623
4f7f9d7bb23d jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 28610
diff changeset
251 }
28830
7d2ea52db354 jabber: Fix a few places where the default for require_tls was wrong.
Paul Aurich <darkrain42@pidgin.im>
parents: 28828
diff changeset
252 } else if(purple_account_get_bool(js->gc->account, "require_tls", JABBER_DEFAULT_REQUIRE_TLS) && !jabber_stream_is_ssl(js)) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
253 purple_connection_error_reason(js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
254 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
255 _("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
256 return;
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
257 }
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
258
10988
c164f2e5dfaa [gaim-migrate @ 12825]
Nathan Walp <nwalp@pidgin.im>
parents: 10941
diff changeset
259 if(js->registration) {
c164f2e5dfaa [gaim-migrate @ 12825]
Nathan Walp <nwalp@pidgin.im>
parents: 10941
diff changeset
260 jabber_register_start(js);
c164f2e5dfaa [gaim-migrate @ 12825]
Nathan Walp <nwalp@pidgin.im>
parents: 10941
diff changeset
261 } else if(xmlnode_get_child(packet, "mechanisms")) {
28623
4f7f9d7bb23d jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 28610
diff changeset
262 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
263 jabber_auth_start(js, packet);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
264 } else if(xmlnode_get_child(packet, "bind")) {
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
265 xmlnode *bind, *resource;
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
266 char *requested_resource;
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
267 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
268 bind = xmlnode_new_child(iq->node, "bind");
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
269 xmlnode_set_namespace(bind, NS_XMPP_BIND);
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
270 requested_resource = jabber_prep_resource(js->user->resource);
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
271
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
272 if (requested_resource != NULL) {
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
273 resource = xmlnode_new_child(bind, "resource");
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
274 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
275 g_free(requested_resource);
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
276 }
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
277
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
278 jabber_iq_set_callback(iq, jabber_bind_result_cb, NULL);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
279
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
280 jabber_iq_send(iq);
29096
362b96f6f3da jabber: Roster Versioning support.
Paul Aurich <darkrain42@pidgin.im>
parents: 29094
diff changeset
281 } else if (xmlnode_get_child_with_namespace(packet, "ver", NS_ROSTER_VERSIONING)) {
362b96f6f3da jabber: Roster Versioning support.
Paul Aurich <darkrain42@pidgin.im>
parents: 29094
diff changeset
282 js->server_caps |= JABBER_CAP_ROSTER_VERSIONING;
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
283 } else /* if(xmlnode_get_child_with_namespace(packet, "auth")) */ {
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
284 /* 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
285 * an auth feature with namespace http://jabber.org/features/iq-auth
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
286 * 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
287 * connecting to an XMPP server. */
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
288 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
28855
c5bc85f9c00e jabber: Factor the SASL auth methods into their own files.
Paul Aurich <darkrain42@pidgin.im>
parents: 28832
diff changeset
289 jabber_auth_start_old(js);
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
290 }
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
291 }
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
292
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
293 static void jabber_stream_handle_error(JabberStream *js, xmlnode *packet)
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
294 {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
295 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
296 char *msg = jabber_parse_error(js, packet, &reason);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
297
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
298 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
299
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
300 g_free(msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
301 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
302
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
303 static void tls_init(JabberStream *js);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
304
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
305 void jabber_process_packet(JabberStream *js, xmlnode **packet)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
306 {
29864
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
307 const char *name;
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
308 const char *xmlns;
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
309
28832
4e4b609b85e4 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <darkrain42@pidgin.im>
parents: 28830
diff changeset
310 purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-receiving-xmlnode", js->gc, packet);
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
311
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
312 /* 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
313 if(NULL == *packet)
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
314 return;
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
315
29864
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
316 name = (*packet)->name;
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
317 xmlns = xmlnode_get_namespace(*packet);
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
318
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
319 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
320 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
321 } 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
322 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
323 } 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
324 jabber_message_parse(js, *packet);
29864
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
325 } else if (purple_strequal(xmlns, NS_XMPP_STREAMS)) {
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
326 if (g_str_equal(name, "features"))
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
327 jabber_stream_features_parse(js, *packet);
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
328 else if (g_str_equal(name, "error"))
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
329 jabber_stream_handle_error(js, *packet);
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
330 } else if (purple_strequal(xmlns, NS_XMPP_SASL)) {
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
331 if (js->state != JABBER_STREAM_AUTHENTICATING)
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
332 purple_debug_warning("jabber", "Ignoring spurious SASL stanza %s\n", name);
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
333 else {
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
334 if (g_str_equal(name, "challenge"))
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
335 jabber_auth_handle_challenge(js, *packet);
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
336 else if (g_str_equal(name, "success"))
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
337 jabber_auth_handle_success(js, *packet);
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
338 else if (g_str_equal(name, "failure"))
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
339 jabber_auth_handle_failure(js, *packet);
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
340 }
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
341 } else if (purple_strequal(xmlns, NS_XMPP_TLS)) {
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
342 if (js->state != JABBER_STREAM_INITIALIZING_ENCRYPTION || js->gsc)
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
343 purple_debug_warning("jabber", "Ignoring spurious %s\n", name);
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
344 else {
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
345 if (g_str_equal(name, "proceed"))
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
346 tls_init(js);
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
347 /* TODO: Handle <failure/>, I guess? */
76caf53857f5 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents: 29853
diff changeset
348 }
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
349 } else {
28828
7c1855f037e7 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents: 28827
diff changeset
350 purple_debug_warning("jabber", "Unknown packet: %s\n", (*packet)->name);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
351 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
352 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
353
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
354 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
355 {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
356 int ret;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
357
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
358 if (js->gsc)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
359 ret = purple_ssl_write(js->gsc, data, len);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
360 else
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
361 ret = write(js->fd, data, len);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
362
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
363 return ret;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
364 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
365
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
366 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
367 {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
368 JabberStream *js = data;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
369 int ret, writelen;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
370 writelen = purple_circ_buffer_get_max_read(js->write_buffer);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
371
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
372 if (writelen == 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
373 purple_input_remove(js->writeh);
13746
790924f38349 [gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents: 13546
diff changeset
374 js->writeh = 0;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
375 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
376 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
377
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
378 ret = jabber_do_send(js, js->write_buffer->outptr, writelen);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
379
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
380 if (ret < 0 && errno == EAGAIN)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
381 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
382 else if (ret <= 0) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
383 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
384 g_strerror(errno));
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
385 purple_connection_error_reason(js->gc,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
386 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
387 g_free(tmp);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
388 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
389 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
390
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
391 purple_circ_buffer_mark_read(js->write_buffer, ret);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
392 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
393
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
394 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
395 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
396 int ret;
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
397 gboolean success = TRUE;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
398
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
399 g_return_val_if_fail(len > 0, FALSE);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
400
30056
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
401 if (js->state == JABBER_STREAM_CONNECTED)
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
402 jabber_stream_restart_inactivity_timer(js);
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
403
13746
790924f38349 [gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents: 13546
diff changeset
404 if (js->writeh == 0)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
405 ret = jabber_do_send(js, data, len);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
406 else {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
407 ret = -1;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
408 errno = EAGAIN;
2814
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
409 }
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
410
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
411 if (ret < 0 && errno != EAGAIN) {
29262
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
412 PurpleAccount *account = purple_connection_get_account(js->gc);
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
413 /*
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
414 * The server may have closed the socket (on a stream error), so if
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
415 * we're disconnecting, don't generate (possibly another) error that
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
416 * (for some UIs) would mask the first.
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
417 */
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
418 if (!account->disconnecting) {
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
419 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
420 g_strerror(errno));
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
421 purple_connection_error_reason(js->gc,
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
422 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
423 g_free(tmp);
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
424 }
6ec383410c8e jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 29222
diff changeset
425
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
426 success = FALSE;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
427 } else if (ret < len) {
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
428 if (ret < 0)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
429 ret = 0;
13746
790924f38349 [gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents: 13546
diff changeset
430 if (js->writeh == 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
431 js->writeh = purple_input_add(
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
432 js->gsc ? js->gsc->fd : js->fd,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
433 PURPLE_INPUT_WRITE, jabber_send_cb, js);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
434 purple_circ_buffer_append(js->write_buffer,
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
435 data + ret, len - ret);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
436 }
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
437
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
438 return success;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
439 }
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
440
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
441 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
442 {
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
443 PurpleConnection *gc;
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
444 PurpleAccount *account;
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
445
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
446 gc = js->gc;
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
447 account = purple_connection_get_account(gc);
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
448
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
449 /* 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
450 if(strcmp(data, "\t")) {
28827
76ec9a15f1a8 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents: 28760
diff changeset
451 const char *username;
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
452 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
453
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
454 /* 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
455 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
456 /* 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
457 (((tag_start = strstr(data, "<auth ")) &&
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
458 strstr(data, "xmlns='" NS_XMPP_SASL "'")) ||
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
459 ((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
460 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
461 (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
462 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
463 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
464
25739
a10f2ed69334 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25727
diff changeset
465 /* 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
466 * due to a plugin sending bad xml */
a10f2ed69334 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25727
diff changeset
467 if (tag_end == NULL)
a10f2ed69334 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25727
diff changeset
468 tag_end = tag_start;
a10f2ed69334 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25727
diff changeset
469
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
470 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
471
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
472 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
473 *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
474 }
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
475
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
476 username = purple_connection_get_display_name(gc);
28827
76ec9a15f1a8 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents: 28760
diff changeset
477 if (!username)
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
478 username = purple_account_get_username(account);
28827
76ec9a15f1a8 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents: 28760
diff changeset
479
76ec9a15f1a8 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents: 28760
diff changeset
480 purple_debug_misc("jabber", "Sending%s (%s): %s%s%s\n",
76ec9a15f1a8 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents: 28760
diff changeset
481 jabber_stream_is_ssl(js) ? " (ssl)" : "", username,
76ec9a15f1a8 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents: 28760
diff changeset
482 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
483 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
484 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
485
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
486 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
487 }
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
488
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
489 purple_signal_emit(purple_connection_get_prpl(gc), "jabber-sending-text", gc, &data);
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
490 if (data == NULL)
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
491 return;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
492
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
493 if (len == -1)
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
494 len = strlen(data);
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
495
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
496 /* 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
497 * splitting it on the maximum buffer length negotiated */
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
498 #ifdef HAVE_CYRUS_SASL
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
499 if (js->sasl_maxbuf>0) {
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
500 int pos = 0;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
501
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
502 if (!js->gsc && js->fd<0)
30153
3cee3e2efd03 jabber: I don't see how this is possible, and it looks like an error to me.
Paul Aurich <darkrain42@pidgin.im>
parents: 30150
diff changeset
503 g_return_if_reached();
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
504
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
505 while (pos < len) {
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
506 int towrite;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
507 const char *out;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
508 unsigned olen;
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
509 int rc;
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
510
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
511 towrite = MIN((len - pos), js->sasl_maxbuf);
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
512
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
513 rc = sasl_encode(js->sasl, &data[pos], towrite,
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
514 &out, &olen);
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
515 if (rc != SASL_OK) {
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
516 gchar *error =
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
517 g_strdup_printf(_("SASL error: %s"),
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
518 sasl_errdetail(js->sasl));
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
519 purple_debug_error("jabber",
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
520 "sasl_encode error %d: %s\n", rc,
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
521 sasl_errdetail(js->sasl));
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
522 purple_connection_error_reason(gc,
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
523 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
524 error);
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
525 g_free(error);
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
526 return;
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
527 }
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
528 pos += towrite;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
529
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
530 /* do_jabber_send_raw returns FALSE when it throws a
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
531 * connection error.
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
532 */
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
533 if (!do_jabber_send_raw(js, out, olen))
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
534 break;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
535 }
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
536 return;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
537 }
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
538 #endif
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
539
28064
6b6e3949132f jabber: Remove js->use_bosh
Paul Aurich <darkrain42@pidgin.im>
parents: 28049
diff changeset
540 if (js->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
541 jabber_bosh_connection_send_raw(js->bosh, data);
24873
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
542 else
23955
18bd5d80fb7b explicit merge of '8d5884281cfb1c7a26fe80c919e38fa13f7a0c4b'
Paul Aurich <darkrain42@pidgin.im>
parents: 23619 23954
diff changeset
543 do_jabber_send_raw(js, data, len);
14604
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
544 }
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
545
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
546 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
547 {
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
548 JabberStream *js = purple_connection_get_protocol_data(gc);
30448
736dde71e3ec jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents: 30156
diff changeset
549
736dde71e3ec jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents: 30156
diff changeset
550 g_return_val_if_fail(js != NULL, -1);
736dde71e3ec jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents: 30156
diff changeset
551 /* TODO: It's probably worthwhile to restrict this to when the account
736dde71e3ec jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents: 30156
diff changeset
552 * state is CONNECTED, but I can /almost/ envision reasons for wanting
736dde71e3ec jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents: 30156
diff changeset
553 * to do things during the connection process.
736dde71e3ec jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents: 30156
diff changeset
554 */
736dde71e3ec jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents: 30156
diff changeset
555
14604
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
556 jabber_send_raw(js, buf, len);
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
557 return len;
2814
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
558 }
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
559
27225
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
560 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
561 gpointer unused)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
562 {
27924
ef40c7484edc Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents: 27918
diff changeset
563 JabberStream *js;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
564 char *txt;
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
565 int len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
566
27225
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
567 if (NULL == packet)
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
568 return;
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
569
30587
dacecb57b543 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents: 30512
diff changeset
570 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(pc));
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
571
27924
ef40c7484edc Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents: 27918
diff changeset
572 js = purple_connection_get_protocol_data(pc);
28974
c781d3082146 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 28928
diff changeset
573
c781d3082146 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 28928
diff changeset
574 if (NULL == js)
c781d3082146 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 28928
diff changeset
575 return;
c781d3082146 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 28928
diff changeset
576
28064
6b6e3949132f jabber: Remove js->use_bosh
Paul Aurich <darkrain42@pidgin.im>
parents: 28049
diff changeset
577 if (js->bosh)
27924
ef40c7484edc Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents: 27918
diff changeset
578 if (g_str_equal((*packet)->name, "message") ||
ef40c7484edc Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents: 27918
diff changeset
579 g_str_equal((*packet)->name, "iq") ||
ef40c7484edc Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents: 27918
diff changeset
580 g_str_equal((*packet)->name, "presence"))
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
581 xmlnode_set_namespace(*packet, NS_XMPP_CLIENT);
27225
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
582 txt = xmlnode_to_str(*packet, &len);
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
583 jabber_send_raw(js, txt, len);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
584 g_free(txt);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
585 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
586
27225
48c94daedc1c Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents: 27223
diff changeset
587 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
588 {
28832
4e4b609b85e4 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <darkrain42@pidgin.im>
parents: 28830
diff changeset
589 purple_signal_emit(purple_connection_get_prpl(js->gc), "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
590 }
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
591
25555
dd0cb987435f Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <darkrain42@pidgin.im>
parents: 25552
diff changeset
592 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
593 {
22101
747c8ade85aa Masca noticed that 0d28b254d322fb0006034065870603672e5666d2 made jabber.c not
Will Thompson <resiak@pidgin.im>
parents: 22096
diff changeset
594 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
595 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
596 _("Ping timed out"));
27304
b2dc447b8c0b The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents: 27293
diff changeset
597 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
598 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
599 }
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
600
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
601 void jabber_keepalive(PurpleConnection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
602 {
29771
b276f3e127af jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents: 29749
diff changeset
603 JabberStream *js = purple_connection_get_protocol_data(gc);
b276f3e127af jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents: 29749
diff changeset
604 time_t now = time(NULL);
b276f3e127af jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents: 29749
diff changeset
605
b276f3e127af jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents: 29749
diff changeset
606 if (js->keepalive_timeout == 0 && (now - js->last_ping) >= PING_TIMEOUT) {
b276f3e127af jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents: 29749
diff changeset
607 js->last_ping = now;
b276f3e127af jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents: 29749
diff changeset
608
27143
977add4a215e Stop trying to be clever with XMPP keepalive pings.
Paul Aurich <darkrain42@pidgin.im>
parents: 27110
diff changeset
609 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
610 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
611 (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
612 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
613 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
614
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
615 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
616 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
617 PurpleInputCondition cond)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
618 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
619 PurpleConnection *gc = data;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
620 JabberStream *js = gc->proto_data;
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
621 int len;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
622 static char buf[4096];
6768
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
623
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 14004
diff changeset
624 /* 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
625 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
626 purple_ssl_close(gsc);
30587
dacecb57b543 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents: 30512
diff changeset
627 g_return_if_reached();
6768
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
628 }
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
629
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
630 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
631 gc->last_received = time(NULL);
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
632 buf[len] = '\0';
28828
7c1855f037e7 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents: 28827
diff changeset
633 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
634 jabber_parser_process(js, buf, len);
14062
dd8d7eb8fa76 [gaim-migrate @ 16585]
Ethan Blanton <elb@pidgin.im>
parents: 14043
diff changeset
635 if(js->reinit)
dd8d7eb8fa76 [gaim-migrate @ 16585]
Ethan Blanton <elb@pidgin.im>
parents: 14043
diff changeset
636 jabber_stream_init(js);
13280
8d45d67480e6 [gaim-migrate @ 15645]
Greg Hudson <ghudson@mit.edu>
parents: 13275
diff changeset
637 }
8d45d67480e6 [gaim-migrate @ 15645]
Greg Hudson <ghudson@mit.edu>
parents: 13275
diff changeset
638
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
639 if(len < 0 && errno == EAGAIN)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
640 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
641 else {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
642 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
643 if (len == 0)
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
644 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
645 else
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
646 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
647 g_strerror(errno));
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
648 purple_connection_error_reason(js->gc,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
649 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
650 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
651 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
652 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
653
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
654 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
655 jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
656 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
657 PurpleConnection *gc = data;
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
658 JabberStream *js = purple_connection_get_protocol_data(gc);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
659 int len;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
660 static char buf[4096];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
661
30587
dacecb57b543 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents: 30512
diff changeset
662 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc));
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
663
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
664 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
665 gc->last_received = time(NULL);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
666 #ifdef HAVE_CYRUS_SASL
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
667 if (js->sasl_maxbuf > 0) {
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
668 const char *out;
14697
518c0fae208e [gaim-migrate @ 17381]
Daniel Atallah <datallah@pidgin.im>
parents: 14668
diff changeset
669 unsigned int olen;
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
670 int rc;
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
671
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
672 rc = sasl_decode(js->sasl, buf, len, &out, &olen);
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
673 if (rc != SASL_OK) {
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
674 gchar *error =
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
675 g_strdup_printf(_("SASL error: %s"),
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
676 sasl_errdetail(js->sasl));
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
677 purple_debug_error("jabber",
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
678 "sasl_decode_error %d: %s\n", rc,
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
679 sasl_errdetail(js->sasl));
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
680 purple_connection_error_reason(gc,
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
681 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
682 error);
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
683 } else if (olen > 0) {
28828
7c1855f037e7 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents: 28827
diff changeset
684 purple_debug_info("jabber", "RecvSASL (%u): %s\n", olen, out);
30155
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
685 jabber_parser_process(js, out, olen);
8e22b8cc78ee jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents: 30153
diff changeset
686 if (js->reinit)
14700
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
687 jabber_stream_init(js);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
688 }
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
689 return;
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
690 }
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
691 #endif
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
692 buf[len] = '\0';
28828
7c1855f037e7 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents: 28827
diff changeset
693 purple_debug_info("jabber", "Recv (%d): %s\n", len, buf);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
694 jabber_parser_process(js, buf, len);
14700
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
695 if(js->reinit)
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
696 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
697 } else if(len < 0 && errno == EAGAIN) {
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
698 return;
7177
36ad58ff37d6 [gaim-migrate @ 7745]
Nathan Walp <nwalp@pidgin.im>
parents: 7147
diff changeset
699 } else {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
700 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
701 if (len == 0)
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
702 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
703 else
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
704 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
705 g_strerror(errno));
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
706 purple_connection_error_reason(js->gc,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
707 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
708 g_free(tmp);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
709 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
710 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
711
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
712 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
713 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
714 PurpleInputCondition cond)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
715 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
716 PurpleConnection *gc = data;
15023
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
717 JabberStream *js;
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
718
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
719 /* 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
720 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
721 purple_ssl_close(gsc);
30587
dacecb57b543 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents: 30512
diff changeset
722 g_return_if_reached();
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
723 }
15023
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
724
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
725 js = gc->proto_data;
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
726
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
727 if(js->state == JABBER_STREAM_CONNECTING)
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
728 jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
729 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
730 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
731
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
732 /* 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
733 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
734 }
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
735
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
736 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
737 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
738 {
24872
68de61b562f6 Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents: 24871
diff changeset
739 JabberStream *js = data;
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
740
24871
60f1695a34e8 Track the TXT query in the js object so it will be cancelleable
Paul Aurich <darkrain42@pidgin.im>
parents: 24870
diff changeset
741 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
742
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
743 if (responses == NULL) {
29137
53b3ca48818e jabber: Print a better error message when all connection methods fail.
Paul Aurich <darkrain42@pidgin.im>
parents: 29096
diff changeset
744 purple_debug_warning("jabber", "Unable to find alternative XMPP connection "
29221
7f2b72fc521a jabber: Newline at the end of this message.
Paul Aurich <darkrain42@pidgin.im>
parents: 29137
diff changeset
745 "methods after failing to connect directly.\n");
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
746 purple_connection_error_reason(js->gc,
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
747 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
29137
53b3ca48818e jabber: Print a better error message when all connection methods fail.
Paul Aurich <darkrain42@pidgin.im>
parents: 29096
diff changeset
748 _("Unable to connect"));
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
749 return;
23607
bc82598d3798 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23604
diff changeset
750 }
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
751
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
752 while (responses) {
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
753 PurpleTxtResponse *resp = responses->data;
23608
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
754 gchar **token;
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
755 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
756 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
757 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
758 js->bosh = jabber_bosh_connection_init(js, token[1]);
23608
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
759 g_strfreev(token);
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
760 break;
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
761 }
42569940482d * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23607
diff changeset
762 g_strfreev(token);
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
763 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
764 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
765 }
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
766
24872
68de61b562f6 Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents: 24871
diff changeset
767 if (js->bosh) {
68de61b562f6 Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents: 24871
diff changeset
768 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
769 } else {
d811757e19b5 * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23608
diff changeset
770 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
771 }
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
772
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
773 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
774 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
775 g_list_free(responses);
26766
854a2eaa3862 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents: 26765
diff changeset
776 }
23607
bc82598d3798 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23604
diff changeset
777 }
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
778
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
779 static void
14175
2bc5a80c5071 [gaim-migrate @ 16747]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
780 jabber_login_callback(gpointer data, gint source, const gchar *error)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
781 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
782 PurpleConnection *gc = data;
29222
022a4164460c jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <darkrain42@pidgin.im>
parents: 29221
diff changeset
783 JabberStream *js = purple_connection_get_protocol_data(gc);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
784
8783
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
785 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
786 if (js->srv_rec != NULL) {
29222
022a4164460c jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <darkrain42@pidgin.im>
parents: 29221
diff changeset
787 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record or connecting directly.\n", error);
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
788 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
789 } else {
29222
022a4164460c jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <darkrain42@pidgin.im>
parents: 29221
diff changeset
790 purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain);
27863
b51630f09c6b ASCII-ize the TXT query, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 27860
diff changeset
791 js->srv_query_data = purple_txt_resolve("_xmppconnect",
27898
4a6450d92e11 Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents: 27872
diff changeset
792 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
793 }
8783
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
794 return;
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
795 }
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
796
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
797 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
798 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
799
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
800 js->fd = source;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
801
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
802 if(js->state == JABBER_STREAM_CONNECTING)
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
803 jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
2300
06a3c10f4918 [gaim-migrate @ 2310]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2289
diff changeset
804
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
805 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
806 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
807 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
808
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
809 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
810 jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error,
7426
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
811 gpointer data)
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
812 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
813 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
814 JabberStream *js;
7426
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
815
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
816 /* If the connection is already disconnected, we don't need to do anything else */
30587
dacecb57b543 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents: 30512
diff changeset
817 g_return_if_fail(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
818
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
819 js = gc->proto_data;
14312
6ce4512aa9a8 [gaim-migrate @ 16932]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
820 js->gsc = NULL;
6ce4512aa9a8 [gaim-migrate @ 16932]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
821
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
822 purple_connection_ssl_error (gc, error);
7426
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
823 }
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
824
7427
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
825 static void tls_init(JabberStream *js)
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
826 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
827 purple_input_remove(js->gc->inpa);
7427
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
828 js->gc->inpa = 0;
18449
2d2df64f4303 applied changes from f9186fabb483b56a9d7e8fb7241b2520e9930413
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18235
diff changeset
829 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
830 jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc);
27918
b32f476d9e35 Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <darkrain42@pidgin.im>
parents: 27898
diff changeset
831 /* The fd is no longer our concern */
b32f476d9e35 Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <darkrain42@pidgin.im>
parents: 27898
diff changeset
832 js->fd = -1;
7427
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
833 }
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
834
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
835 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
836 gboolean fatal_failure)
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
837 {
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
838 /* 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
839 * 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
840 * 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
841 * 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
842 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
843 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
844 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
845 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
846 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
847
27872
80d354ef1295 To make grim happy (or more upset).
Paul Aurich <darkrain42@pidgin.im>
parents: 27863
diff changeset
848 if (purple_proxy_connect(js->gc, purple_connection_get_account(js->gc),
80d354ef1295 To make grim happy (or more upset).
Paul Aurich <darkrain42@pidgin.im>
parents: 27863
diff changeset
849 host, port, jabber_login_callback, js->gc) == NULL) {
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
850 if (fatal_failure) {
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
851 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
852 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27635
0cd19038c417 More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents: 27605
diff changeset
853 _("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
854 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
855
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
856 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
857 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
858
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
859 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
860 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
861
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
862 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
863 {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
864 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
865 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
866 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
867 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
868 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
869
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
870 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
871 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
872
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
873 /* 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
874 jabber_login_connect(js, js->user->domain, js->user->domain,
27872
80d354ef1295 To make grim happy (or more upset).
Paul Aurich <darkrain42@pidgin.im>
parents: 27863
diff changeset
875 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222),
27898
4a6450d92e11 Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents: 27872
diff changeset
876 TRUE);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
877 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
878
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
879 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
880 {
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
881 JabberStream *js = data;
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
882 js->srv_query_data = NULL;
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
883
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
884 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
885 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
886 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
887 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
888 try_srv_connect(js);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
889 } else {
17052
b064b8e0244b fix #699
Nathan Walp <nwalp@pidgin.im>
parents: 17008
diff changeset
890 jabber_login_connect(js, js->user->domain, js->user->domain,
27872
80d354ef1295 To make grim happy (or more upset).
Paul Aurich <darkrain42@pidgin.im>
parents: 27863
diff changeset
891 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222),
27898
4a6450d92e11 Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents: 27872
diff changeset
892 TRUE);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
893 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
894 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
895
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
896 static JabberStream *
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
897 jabber_stream_new(PurpleAccount *account)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
898 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
899 PurpleConnection *gc = purple_account_get_connection(account);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
900 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
901 PurplePresence *presence;
27860
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
902 gchar *user;
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
903 gchar *slash;
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
904
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
905 js = gc->proto_data = g_new0(JabberStream, 1);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
906 js->gc = gc;
8013
03f5b77cdaf0 [gaim-migrate @ 8693]
Olivier Blin <blino@users.sourceforge.net>
parents: 8011
diff changeset
907 js->fd = -1;
27860
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
908
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
909 user = g_strdup(purple_account_get_username(account));
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
910 /* jabber_id_new doesn't accept "user@domain/" as valid */
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
911 slash = strchr(user, '/');
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
912 if (slash && *(slash + 1) == '\0')
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
913 *slash = '\0';
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
914 js->user = jabber_id_new(user);
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
915
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
916 if (!js->user) {
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
917 purple_connection_error_reason(gc,
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
918 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
919 _("Invalid XMPP ID"));
30035
7cc220fddfd0 jabber: --leaks
Paul Aurich <darkrain42@pidgin.im>
parents: 30032
diff changeset
920 g_free(user);
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
921 /* Destroying the connection will free the JabberStream */
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
922 return NULL;
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
923 }
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
924
29979
f7f4478c8d19 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents: 29910
diff changeset
925 if (!js->user->node || *(js->user->node) == '\0') {
f7f4478c8d19 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents: 29910
diff changeset
926 purple_connection_error_reason(gc,
f7f4478c8d19 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents: 29910
diff changeset
927 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
f7f4478c8d19 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents: 29910
diff changeset
928 _("Invalid XMPP ID. Username portion must be set."));
30035
7cc220fddfd0 jabber: --leaks
Paul Aurich <darkrain42@pidgin.im>
parents: 30032
diff changeset
929 g_free(user);
29979
f7f4478c8d19 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents: 29910
diff changeset
930 /* Destroying the connection will free the JabberStream */
f7f4478c8d19 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents: 29910
diff changeset
931 return NULL;
f7f4478c8d19 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents: 29910
diff changeset
932 }
f7f4478c8d19 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents: 29910
diff changeset
933
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
934 if (!js->user->domain || *(js->user->domain) == '\0') {
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
935 purple_connection_error_reason(gc,
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
936 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
937 _("Invalid XMPP ID. Domain must be set."));
30035
7cc220fddfd0 jabber: --leaks
Paul Aurich <darkrain42@pidgin.im>
parents: 30032
diff changeset
938 g_free(user);
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
939 /* Destroying the connection will free the JabberStream */
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
940 return NULL;
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
941 }
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
942
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
943 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
944 g_free, (GDestroyNotify)jabber_buddy_free);
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
945
28071
a0706162fefd jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents: 28070
diff changeset
946 js->user_jb = jabber_buddy_find(js, user, TRUE);
27860
2b75b87699c8 Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents: 27850
diff changeset
947 g_free(user);
28071
a0706162fefd jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents: 28070
diff changeset
948 if (!js->user_jb) {
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
949 /* This basically *can't* fail, but for good measure... */
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
950 purple_connection_error_reason(gc,
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
951 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
952 _("Invalid XMPP ID"));
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
953 /* Destroying the connection will free the JabberStream */
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
954 g_return_val_if_reached(NULL);
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
955 }
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
956
28071
a0706162fefd jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents: 28070
diff changeset
957 js->user_jb->subscription |= JABBER_SUB_BOTH;
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
958
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
959 js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
960 g_free, g_free);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
961 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
962 g_free, (GDestroyNotify)jabber_chat_free);
7322
de15a9314c04 [gaim-migrate @ 7908]
Nathan Walp <nwalp@pidgin.im>
parents: 7310
diff changeset
963 js->next_id = g_random_int();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
964 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
965 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
966 js->keepalive_timeout = 0;
30056
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
967 js->max_inactivity = DEFAULT_INACTIVITY_TIME;
26080
bfe333bf2ae8 Jabber: Default protocol version to 1.0.
Paul Aurich <darkrain42@pidgin.im>
parents: 26074
diff changeset
968 /* Set the default protocol version to 1.0. Overridden in parser.c. */
29849
d7b910200dc5 jabber: Treat the version properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 29848
diff changeset
969 js->protocol_version.major = 1;
d7b910200dc5 jabber: Treat the version properly.
Paul Aurich <darkrain42@pidgin.im>
parents: 29848
diff changeset
970 js->protocol_version.minor = 0;
23698
0815965bd80b Moved jingle.c global variable "sessions" into JabberStream.
Michael Ruprecht <maiku@pidgin.im>
parents: 23697
diff changeset
971 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
972 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
973 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
974 js->stun_query = NULL;
5613
df1602bc1e05 [gaim-migrate @ 6019]
Nathan Walp <nwalp@pidgin.im>
parents: 5599
diff changeset
975
25531
b348ceba3289 Set idle time on JabberStream when logging in
Marcus Lundblad <malu@pidgin.im>
parents: 25497
diff changeset
976 /* 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
977 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
978 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
979 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
980 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
981 js->idle = purple_presence_get_idle_time(presence);
5613
df1602bc1e05 [gaim-migrate @ 6019]
Nathan Walp <nwalp@pidgin.im>
parents: 5599
diff changeset
982
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
983 return js;
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
984 }
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
985
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
986 static void
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
987 jabber_stream_connect(JabberStream *js)
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
988 {
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
989 PurpleConnection *gc = js->gc;
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
990 PurpleAccount *account = purple_connection_get_account(gc);
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
991 const char *connect_server = purple_account_get_string(account,
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
992 "connect_server", "");
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
993 const char *bosh_url = purple_account_get_string(account,
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
994 "bosh_url", "");
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
995
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
996 jabber_stream_set_state(js, JABBER_STREAM_CONNECTING);
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
997
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
998 /* 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
999 * attached to that choice, though.
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
1000 */
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
1001 if (*bosh_url) {
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
1002 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
1003 if (js->bosh)
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
1004 jabber_bosh_connection_connect(js->bosh);
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
1005 else {
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1006 purple_connection_error_reason(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
1007 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
1008 _("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
1009 }
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
1010
24870
98e6bafdf33f Add option for forcing BOSH (useful for debugging)
Paul Aurich <darkrain42@pidgin.im>
parents: 24868
diff changeset
1011 return;
98e6bafdf33f Add option for forcing BOSH (useful for debugging)
Paul Aurich <darkrain42@pidgin.im>
parents: 24868
diff changeset
1012 }
98e6bafdf33f Add option for forcing BOSH (useful for debugging)
Paul Aurich <darkrain42@pidgin.im>
parents: 24868
diff changeset
1013
27397
690965a5ff24 Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
1014 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
1015
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
1016 /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1017 if(purple_account_get_bool(account, "old_ssl", FALSE)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1018 if(purple_ssl_is_supported()) {
27898
4a6450d92e11 Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents: 27872
diff changeset
1019 js->gsc = purple_ssl_connect(account, js->certificate_CN,
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1020 purple_account_get_int(account, "port", 5223),
27898
4a6450d92e11 Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents: 27872
diff changeset
1021 jabber_login_callback_ssl, jabber_ssl_connect_failure, 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
1022 if (!js->gsc) {
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1023 purple_connection_error_reason(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
1024 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
1025 _("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
1026 }
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
1027 } else {
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1028 purple_connection_error_reason(gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
1029 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
1030 _("SSL support unavailable"));
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
1031 }
25804
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
1032
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
1033 return;
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
1034 }
3770
5d476318f306 [gaim-migrate @ 3909]
Sean Egan <seanegan@pidgin.im>
parents: 3769
diff changeset
1035
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
1036 /* 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
1037 * 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
1038 if(connect_server[0]) {
27898
4a6450d92e11 Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents: 27872
diff changeset
1039 jabber_login_connect(js, js->user->domain, connect_server,
4a6450d92e11 Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents: 27872
diff changeset
1040 purple_account_get_int(account, "port", 5222), TRUE);
25804
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
1041 } else {
f18ad58795a2 Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents: 25803
diff changeset
1042 js->srv_query_data = purple_srv_resolve("xmpp-client",
27898
4a6450d92e11 Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents: 27872
diff changeset
1043 "tcp", js->user->domain, srv_resolved_cb, js);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
1044 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
1045 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
1046
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
1047 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1048 jabber_login(PurpleAccount *account)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1049 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1050 PurpleConnection *gc = purple_account_get_connection(account);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1051 JabberStream *js;
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1052 PurpleStoredImage *image;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1053
23626
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
1054 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
1055 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY;
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1056 js = jabber_stream_new(account);
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1057 if (js == NULL)
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1058 return;
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1059
29370
9ff8f3bdd0f5 jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <darkrain42@pidgin.im>
parents: 29345
diff changeset
1060 /* TODO: Remove this at some point. Added 2010-02-14 (v2.6.6) */
9ff8f3bdd0f5 jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <darkrain42@pidgin.im>
parents: 29345
diff changeset
1061 if (g_str_equal("proxy.jabber.org", purple_account_get_string(account, "ft_proxies", "")))
9ff8f3bdd0f5 jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <darkrain42@pidgin.im>
parents: 29345
diff changeset
1062 purple_account_set_string(account, "ft_proxies", JABBER_DEFAULT_FT_PROXIES);
9ff8f3bdd0f5 jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <darkrain42@pidgin.im>
parents: 29345
diff changeset
1063
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1064 /*
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1065 * Calculate the avatar hash for our current image so we know (when we
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1066 * fetch our vCard and PEP avatar) if we should send our avatar to the
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1067 * server.
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1068 */
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1069 image = purple_buddy_icons_find_account_icon(account);
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1070 if (image != NULL) {
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1071 js->initial_avatar_hash =
29910
f1c6e586e5c1 jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <malu@pidgin.im>
parents: 29865
diff changeset
1072 jabber_calculate_data_hash(purple_imgstore_get_data(image),
f1c6e586e5c1 jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <malu@pidgin.im>
parents: 29865
diff changeset
1073 purple_imgstore_get_size(image), "sha1");
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1074 purple_imgstore_unref(image);
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1075 }
26286
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1076
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1077 jabber_stream_connect(js);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1078 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1079
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
1080
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1081 static gboolean
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1082 conn_close_cb(gpointer data)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1083 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1084 JabberStream *js = data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1085 PurpleAccount *account = purple_connection_get_account(js->gc);
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
1086
17810
c8d4297080cb Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents: 17806
diff changeset
1087 jabber_parser_free(js);
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
1088
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1089 purple_account_disconnect(account);
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
1090
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1091 return FALSE;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1092 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1093
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1094 static void
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1095 jabber_connection_schedule_close(JabberStream *js)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1096 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1097 purple_timeout_add(0, conn_close_cb, js);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1098 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1099
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1100 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
1101 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
1102 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
1103 xmlnode *packet, gpointer data)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1104 {
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
1105 PurpleAccount *account = purple_connection_get_account(js->gc);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1106 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
1107 char *to = data;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1108
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
1109 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
1110 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
1111 buf = g_strdup_printf(_("Registration of %s@%s successful"),
27587
fac3003790f2 Indentation fix.
Etan Reisner <deryni@pidgin.im>
parents: 27304
diff changeset
1112 js->user->node, js->user->domain);
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
1113 if(account->registration_cb)
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
1114 (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
1115 } 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
1116 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
1117 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
1118 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
1119 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1120 purple_notify_info(NULL, _("Registration Successful"),
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1121 _("Registration Successful"), buf);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1122 g_free(buf);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1123 } else {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1124 char *msg = jabber_parse_error(js, packet, NULL);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1125
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1126 if(!msg)
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1127 msg = g_strdup(_("Unknown Error"));
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1128
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1129 purple_notify_error(NULL, _("Registration Failed"),
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1130 _("Registration Failed"), msg);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1131 g_free(msg);
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
1132 if(account->registration_cb)
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
1133 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1134 }
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
1135 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
1136 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
1137 jabber_connection_schedule_close(js);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1138 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1139
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1140 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
1141 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
1142 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
1143 xmlnode *packet, gpointer data)
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1144 {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1145 char *buf;
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1146 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
1147
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
1148 /* 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
1149 * 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
1150 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
1151
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
1152 if (type == JABBER_IQ_RESULT) {
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1153 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
1154 to);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1155 purple_notify_info(NULL, _("Unregistration Successful"),
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1156 _("Unregistration Successful"), buf);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1157 g_free(buf);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1158 } else {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1159 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
1160
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1161 if(!msg)
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1162 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
1163
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1164 purple_notify_error(NULL, _("Unregistration Failed"),
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1165 _("Unregistration Failed"), msg);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1166 g_free(msg);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1167 }
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1168 g_free(to);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1169 }
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1170
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
1171 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
1172 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
1173 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
1174 } 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
1175
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1176 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
1177 jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1178 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1179 GList *groups, *flds;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1180 xmlnode *query, *y;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1181 JabberIq *iq;
7264
bdb42afa3565 [gaim-migrate @ 7841]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
1182 char *username;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1183
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
1184 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
1185 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
1186 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
1187 xmlnode_set_attrib(iq->node, "to", cbdata->who);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1188
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1189 for(groups = purple_request_fields_get_groups(fields); groups;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1190 groups = groups->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1191 for(flds = purple_request_field_group_get_fields(groups->data);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1192 flds; flds = flds->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1193 PurpleRequestField *field = flds->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1194 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
1195 if(!strcmp(id,"unregister")) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1196 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
1197 if(value) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1198 /* 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
1199 (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
1200 jabber_iq_free(iq);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1201 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
1202 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
1203 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
1204 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
1205 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
1206
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1207 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
1208
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1209 jabber_iq_send(iq);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1210 g_free(cbdata);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1211 return;
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1212 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1213 } else {
28656
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1214 const char *ids[] = {"username", "password", "name", "email", "nick", "first",
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1215 "last", "address", "city", "state", "zip", "phone", "url", "date",
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1216 NULL};
28610
c914f0e55687 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents: 28583
diff changeset
1217 const char *value = purple_request_field_string_get_value(field);
28656
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1218 int i;
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1219 for (i = 0; ids[i]; i++) {
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1220 if (!strcmp(id, ids[i]))
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1221 break;
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1222 }
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1223
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1224 if (!ids[i])
28610
c914f0e55687 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents: 28583
diff changeset
1225 continue;
28656
d003bf9b787e A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28623
diff changeset
1226 y = xmlnode_new_child(query, ids[i]);
28610
c914f0e55687 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents: 28583
diff changeset
1227 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
1228 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
1229 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
1230 cbdata->js->user->node = g_strdup(value);
28610
c914f0e55687 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents: 28583
diff changeset
1231 }
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1232 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
1233 purple_account_set_password(cbdata->js->gc->account, value);
28610
c914f0e55687 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents: 28583
diff changeset
1234 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1235 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1236 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1237
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
1238 if(cbdata->js->registration) {
28610
c914f0e55687 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents: 28583
diff changeset
1239 username = g_strdup_printf("%s@%s%s%s", cbdata->js->user->node, cbdata->js->user->domain,
29035
7e9ba5e8177b *** Plucked rev 941f01ed2234f8e476b7260fbd6ea873583387f7 (f05c54b03e6bbfdbff38c01697fbd353a969e05e):
Daniel Atallah <datallah@pidgin.im>
parents: 28984
diff changeset
1240 cbdata->js->user->resource ? "/" : "",
7e9ba5e8177b *** Plucked rev 941f01ed2234f8e476b7260fbd6ea873583387f7 (f05c54b03e6bbfdbff38c01697fbd353a969e05e):
Daniel Atallah <datallah@pidgin.im>
parents: 28984
diff changeset
1241 cbdata->js->user->resource ? cbdata->js->user->resource : "");
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
1242 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
1243 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
1244 }
7264
bdb42afa3565 [gaim-migrate @ 7841]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
1245
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
1246 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
1247
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1248 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
1249 g_free(cbdata);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1250 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1251
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1252 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
1253 jabber_register_cancel_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1254 {
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
1255 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
1256 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
1257 if(account->registration_cb)
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
1258 (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
1259 jabber_connection_schedule_close(cbdata->js);
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1260 }
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 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
1262 g_free(cbdata);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1263 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1264
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1265 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
1266 {
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1267 xmlnode *query;
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1268 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
1269 char *to = data;
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1270
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1271 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
1272 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
1273 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
1274 xmlnode_set_attrib(iq->node,"to",to);
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1275
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1276 xmlnode_insert_child(query, result);
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1277
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
1278 jabber_iq_set_callback(iq, jabber_registration_result_cb, to);
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1279 jabber_iq_send(iq);
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1280 }
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1281
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1282 static const struct {
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1283 const char *name;
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1284 const char *label;
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1285 } registration_fields[] = {
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1286 { "email", N_("Email") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1287 { "nick", N_("Nickname") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1288 { "first", N_("First name") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1289 { "last", N_("Last name") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1290 { "address", N_("Address") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1291 { "city", N_("City") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1292 { "state", N_("State") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1293 { "zip", N_("Postal code") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1294 { "phone", N_("Phone") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1295 { "url", N_("URL") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1296 { "date", N_("Date") },
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1297 { NULL, NULL }
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1298 };
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1299
25817
09d6a40a341d Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents: 25814
diff changeset
1300 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
1301 const char *id, xmlnode *query)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1302 {
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
1303 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
1304 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
1305 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
1306 PurpleRequestField *field;
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1307 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
1308 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
1309 JabberRegisterCBData *cbdata;
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1310 gboolean registered = FALSE;
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1311 int i;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1312
25817
09d6a40a341d Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents: 25814
diff changeset
1313 if (type != JABBER_IQ_RESULT)
14356
7f4abf922cfa [gaim-migrate @ 16984]
Nathan Walp <nwalp@pidgin.im>
parents: 14324
diff changeset
1314 return;
7f4abf922cfa [gaim-migrate @ 16984]
Nathan Walp <nwalp@pidgin.im>
parents: 14324
diff changeset
1315
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
1316 if(js->registration) {
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1317 /* get rid of the login thingy */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1318 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
1319 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1320
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
1321 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
1322 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
1323
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
1324 if(js->registration) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1325 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
1326 _("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
1327 if(account->registration_cb)
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
1328 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1329 jabber_connection_schedule_close(js);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1330 return;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1331 }
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
1332 }
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1333
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
1334 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
1335 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
1336 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
1337
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
1338 } else if((x = xmlnode_get_child_with_namespace(query, "x", NS_OOB_X_DATA))) {
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
1339 xmlnode *url;
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1340
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
1341 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
1342 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
1343 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
1344 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
1345 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
1346
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
1347 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
1348 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
1349 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
1350 (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
1351 jabber_connection_schedule_close(js);
8398
dccdcef78405 [gaim-migrate @ 9127]
Nathan Walp <nwalp@pidgin.im>
parents: 8396
diff changeset
1352 }
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
1353 return;
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1354 }
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1355 }
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
1356 }
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1357
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
1358 /* 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
1359
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
1360 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
1361 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
1362 purple_request_fields_add_group(fields, group);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1363
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1364 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
1365 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
1366 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
1367 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
1368 else
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1369 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
1370
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1371 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
1372 g_free(data);
26583
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1373 }
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1374 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
1375 if(js->registration)
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1376 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
1377 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
1378 else {
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1379 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
1380 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
1381 g_free(data);
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1382 }
26583
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1383
e115c7ef2fcf Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents: 26086
diff changeset
1384 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
1385 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
1386 }
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1387
26927
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1388 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
1389 if(js->registration)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1390 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
1391 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
1392 else {
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1393 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
1394 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
1395 g_free(data);
4676609b1855 Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents: 26924
diff changeset
1396 }
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
1397 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
1398 }
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1399
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1400 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
1401 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
1402 char *data = xmlnode_get_data(node);
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1403 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
1404 _(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
1405 data, FALSE);
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1406 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
1407 g_free(data);
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1408 }
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
1409 }
26924
fb6574724452 This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents: 26922
diff changeset
1410
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1411 if(registered) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1412 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
1413 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
1414 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1415
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1416 if((y = xmlnode_get_child(query, "instructions")))
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1417 instructions = xmlnode_get_data(y);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1418 else if(registered)
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1419 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
1420 "to change your account registration."));
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1421 else
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1422 instructions = g_strdup(_("Please fill out the information below "
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1423 "to register your new account."));
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1424
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
1425 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
1426 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
1427 cbdata->who = g_strdup(from);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1428
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
1429 if(js->registration)
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1430 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
1431 _("Register New XMPP Account"), instructions, fields,
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1432 _("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
1433 _("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
1434 purple_connection_get_account(js->gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1435 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
1436 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
1437 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
1438 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
1439 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
1440 :g_strdup_printf(_("Register New Account at %s"), from);
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1441 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
1442 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
1443 (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
1444 _("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
1445 purple_connection_get_account(js->gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1446 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
1447 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
1448 }
14140
fcb570e0b2db [gaim-migrate @ 16699]
Daniel Atallah <datallah@pidgin.im>
parents: 14115
diff changeset
1449
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1450 g_free(instructions);
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1451 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1452
8016
d75a4e86f7c3 [gaim-migrate @ 8696]
Nathan Walp <nwalp@pidgin.im>
parents: 8013
diff changeset
1453 void jabber_register_start(JabberStream *js)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1454 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1455 JabberIq *iq;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1456
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1457 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
1458 jabber_iq_send(iq);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1459 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1460
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
1461 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
1462 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
1463
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
1464 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
1465 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
1466 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
1467 }
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
1468
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
1469 void jabber_register_account(PurpleAccount *account)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1470 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1471 JabberStream *js;
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1472
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1473 js = jabber_stream_new(account);
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1474 if (js == NULL)
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1475 return;
27850
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1476
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1477 js->registration = TRUE;
3087baaf7831 Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents: 27779
diff changeset
1478 jabber_stream_connect(js);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1479 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1480
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
1481 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
1482 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
1483 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
1484 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
1485 {
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
1486 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
1487
1e799151fabe Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents: 26686
diff changeset
1488 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
1489 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
1490
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
1491 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
1492 _("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
1493 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
1494 if(js->unregistration_cb)
18995
6ba7743720cb Mixed up TRUE and FALSE.
Andreas Monitzer <am@adiumx.com>
parents: 18994
diff changeset
1495 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
1496 } 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
1497 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
1498 _("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
1499 if(js->unregistration_cb)
18995
6ba7743720cb Mixed up TRUE and FALSE.
Andreas Monitzer <am@adiumx.com>
parents: 18994
diff changeset
1500 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
1501 }
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
1502 }
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
1503
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
1504 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
1505 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
1506 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
1507
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1508 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
1509
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1510 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
1511
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1512 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
1513
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1514 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
1515 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
1516
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1517 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
1518 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
1519 }
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
1520
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
1521 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
1522 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
1523 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
1524
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
1525 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
1526 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
1527 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
1528 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
1529 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
1530 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
1531 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
1532 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
1533 }
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
1534
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
1535 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
1536
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1537 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
1538 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
1539 return;
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1540 }
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1541
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
1542 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
1543 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
1544 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
1545
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
1546 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
1547 }
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
1548
25727
1440163769e6 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents: 25726
diff changeset
1549 /* 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
1550 * 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
1551 * 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
1552 * 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
1553 */
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
1554 void jabber_close(PurpleConnection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1555 {
29264
ea88690768fe jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents: 29263
diff changeset
1556 JabberStream *js = purple_connection_get_protocol_data(gc);
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1557
23717
5a7e463b226d Further decoupled Jingle code from jabber.c:
Michael Ruprecht <maiku@pidgin.im>
parents: 23716
diff changeset
1558 /* 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
1559 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
1560
29264
ea88690768fe jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents: 29263
diff changeset
1561 if (js->bosh)
ea88690768fe jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents: 29263
diff changeset
1562 jabber_bosh_connection_close(js->bosh);
ea88690768fe jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents: 29263
diff changeset
1563 else if ((js->gsc && js->gsc->fd > 0) || js->fd > 0)
14003
5fab5dad7ab6 [gaim-migrate @ 16477]
Sean Egan <seanegan@pidgin.im>
parents: 13956
diff changeset
1564 jabber_send_raw(js, "</stream:stream>", -1);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
1565
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
1566 if (js->srv_query_data)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1567 purple_srv_cancel(js->srv_query_data);
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
1568
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1569 if(js->gsc) {
29264
ea88690768fe jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents: 29263
diff changeset
1570 purple_ssl_close(js->gsc);
8360
2976b7f18935 [gaim-migrate @ 9084]
Nathan Walp <nwalp@pidgin.im>
parents: 8312
diff changeset
1571 } else if (js->fd > 0) {
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1572 if(js->gc->inpa)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1573 purple_input_remove(js->gc->inpa);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1574 close(js->fd);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1575 }
15363
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 15344
diff changeset
1576
24873
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1577 if (js->bosh)
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1578 jabber_bosh_connection_destroy(js->bosh);
7d1e91d5ec46 Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents: 24872
diff changeset
1579
15363
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 15344
diff changeset
1580 jabber_buddy_remove_all_pending_buddy_info_requests(js);
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 15344
diff changeset
1581
17810
c8d4297080cb Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents: 17806
diff changeset
1582 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
1583
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1584 if(js->iq_callbacks)
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1585 g_hash_table_destroy(js->iq_callbacks);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1586 if(js->buddies)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1587 g_hash_table_destroy(js->buddies);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1588 if(js->chats)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1589 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
1590
8043
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1591 while(js->chat_servers) {
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1592 g_free(js->chat_servers->data);
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1593 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
1594 }
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
1595
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1596 while(js->user_directories) {
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1597 g_free(js->user_directories->data);
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1598 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
1599 }
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
1600
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
1601 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
1602 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
1603 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
1604 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
1605 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
1606 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
1607 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
1608 }
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
1609
24012
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1610 while(js->url_datas) {
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1611 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
1612 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
1613 }
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1614
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
1615 g_free(js->stream_id);
7587
57f1a8a3542d [gaim-migrate @ 8205]
Nathan Walp <nwalp@pidgin.im>
parents: 7514
diff changeset
1616 if(js->user)
57f1a8a3542d [gaim-migrate @ 8205]
Nathan Walp <nwalp@pidgin.im>
parents: 7514
diff changeset
1617 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
1618 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
1619 g_free(js->avatar_hash);
24716
047f5075ca58 Entity Capabilities must be per-JabberStream
Paul Aurich <darkrain42@pidgin.im>
parents: 24715
diff changeset
1620 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
1621
30032
02bd634e0591 jabber: Stifle an assertion warning.
Paul Aurich <darkrain42@pidgin.im>
parents: 30013
diff changeset
1622 if (js->write_buffer)
02bd634e0591 jabber: Stifle an assertion warning.
Paul Aurich <darkrain42@pidgin.im>
parents: 30013
diff changeset
1623 purple_circ_buffer_destroy(js->write_buffer);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
1624 if(js->writeh)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1625 purple_input_remove(js->writeh);
28866
e3d867ce000b jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <darkrain42@pidgin.im>
parents: 28855
diff changeset
1626 if (js->auth_mech && js->auth_mech->dispose)
e3d867ce000b jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <darkrain42@pidgin.im>
parents: 28855
diff changeset
1627 js->auth_mech->dispose(js);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1628 #ifdef HAVE_CYRUS_SASL
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1629 if(js->sasl)
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1630 sasl_dispose(&js->sasl);
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1631 if(js->sasl_mechs)
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1632 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
1633 g_free(js->sasl_cb);
18449
2d2df64f4303 applied changes from f9186fabb483b56a9d7e8fb7241b2520e9930413
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18235
diff changeset
1634 #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
1635 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
1636 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
1637 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
1638 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
1639 g_free(cmd->node);
17827
33575af6da8b Fixed copy/paste error.
Andreas Monitzer <am@adiumx.com>
parents: 17824
diff changeset
1640 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
1641 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
1642 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
1643 }
15198
08deb9b51708 [gaim-migrate @ 17922]
Sean Egan <seanegan@pidgin.im>
parents: 15185
diff changeset
1644 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
1645 g_free(js->certificate_CN);
15225
d04a059065dd [gaim-migrate @ 17949]
Sean Egan <seanegan@pidgin.im>
parents: 15205
diff changeset
1646 g_free(js->gmail_last_time);
d04a059065dd [gaim-migrate @ 17949]
Sean Egan <seanegan@pidgin.im>
parents: 15205
diff changeset
1647 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
1648 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
1649 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
1650 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
1651 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
1652 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
1653 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
1654 g_free(js->old_track);
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
1655
28046
8b6fcc2c95b3 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <darkrain42@pidgin.im>
parents: 27924
diff changeset
1656 if (js->vcard_timer != 0)
8b6fcc2c95b3 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <darkrain42@pidgin.im>
parents: 27924
diff changeset
1657 purple_timeout_remove(js->vcard_timer);
8b6fcc2c95b3 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <darkrain42@pidgin.im>
parents: 27924
diff changeset
1658
27304
b2dc447b8c0b The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents: 27293
diff changeset
1659 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
1660 purple_timeout_remove(js->keepalive_timeout);
30056
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
1661 if (js->inactivity_timer != 0)
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
1662 purple_timeout_remove(js->inactivity_timer);
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
1663
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1664 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
1665 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
1666
26286
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1667 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
1668 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
1669
443041606e32 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents: 26269
diff changeset
1670 /* 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
1671 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
1672 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
1673 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
1674 }
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
1675
23911
f54fe603e84a Fix a stupid mistake in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents: 23910
diff changeset
1676 g_free(js);
f54fe603e84a Fix a stupid mistake in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents: 23910
diff changeset
1677
11389
c1e05b75b0b0 [gaim-migrate @ 13617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11387
diff changeset
1678 gc->proto_data = NULL;
5093
7761492245e6 [gaim-migrate @ 5455]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
1679 }
7761492245e6 [gaim-migrate @ 5455]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
1680
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1681 void jabber_stream_set_state(JabberStream *js, JabberStreamState state)
3105
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1682 {
28623
4f7f9d7bb23d jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 28610
diff changeset
1683 #define JABBER_CONNECT_STEPS ((js->gsc || js->state == JABBER_STREAM_INITIALIZING_ENCRYPTION) ? 9 : 5)
4f7f9d7bb23d jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 28610
diff changeset
1684
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1685 js->state = state;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1686 switch(state) {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1687 case JABBER_STREAM_OFFLINE:
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1688 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1689 case JABBER_STREAM_CONNECTING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1690 purple_connection_update_progress(js->gc, _("Connecting"), 1,
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1691 JABBER_CONNECT_STEPS);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1692 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1693 case JABBER_STREAM_INITIALIZING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1694 purple_connection_update_progress(js->gc, _("Initializing Stream"),
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1695 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1696 jabber_stream_init(js);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1697 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
1698 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
1699 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
1700 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
1701 break;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1702 case JABBER_STREAM_AUTHENTICATING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1703 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
1704 js->gsc ? 7 : 3, JABBER_CONNECT_STEPS);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1705 break;
28379
df144a809a92 jabber: Fix using BOSH and legacy auth together. Closes #9990.
Paul Aurich <darkrain42@pidgin.im>
parents: 28322
diff changeset
1706 case JABBER_STREAM_POST_AUTH:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1707 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
1708 (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
1709
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1710 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1711 case JABBER_STREAM_CONNECTED:
27278
b34a1cea4872 Use js->state to track whether the roster has been retrieved.
Paul Aurich <darkrain42@pidgin.im>
parents: 27231
diff changeset
1712 /* Send initial presence */
b34a1cea4872 Use js->state to track whether the roster has been retrieved.
Paul Aurich <darkrain42@pidgin.im>
parents: 27231
diff changeset
1713 jabber_presence_send(js, TRUE);
30056
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
1714 /* Start up the inactivity timer */
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
1715 jabber_stream_restart_inactivity_timer(js);
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
1716
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1717 purple_connection_set_state(js->gc, PURPLE_CONNECTED);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1718 break;
3105
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1719 }
28623
4f7f9d7bb23d jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 28610
diff changeset
1720
4f7f9d7bb23d jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents: 28610
diff changeset
1721 #undef JABBER_CONNECT_STEPS
3105
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1722 }
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1723
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1724 char *jabber_get_next_id(JabberStream *js)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1725 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1726 return g_strdup_printf("purple%x", js->next_id++);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1727 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1728
14453
1cc75906700c [gaim-migrate @ 17098]
Mark Doliner <markdoliner@pidgin.im>
parents: 14375
diff changeset
1729
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
1730 void jabber_idle_set(PurpleConnection *gc, int idle)
3340
7e59a209931d [gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3337
diff changeset
1731 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1732 JabberStream *js = gc->proto_data;
3340
7e59a209931d [gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3337
diff changeset
1733
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1734 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
1735
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
1736 /* 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
1737 purple_debug_info("jabber", "sending updated presence for idle\n");
26959
8482365bb2ec Fix merging.
Paul Aurich <darkrain42@pidgin.im>
parents: 26958
diff changeset
1738 jabber_presence_send(js, FALSE);
3314
12fa45677717 [gaim-migrate @ 3332]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3311
diff changeset
1739 }
12fa45677717 [gaim-migrate @ 3332]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3311
diff changeset
1740
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1741 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
1742 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
1743 xmlnode *child)
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1744 {
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1745 JabberIq *result;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1746 xmlnode *item;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1747 PurpleAccount *account;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1748 gboolean is_block;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1749
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1750 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
1751 xmlnode *error, *x;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1752 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
1753 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
1754 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
1755 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
1756
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1757 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
1758 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
1759 x = xmlnode_new_child(error, "not-allowed");
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
1760 xmlnode_set_namespace(x, NS_XMPP_STANZAS);
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1761
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1762 jabber_iq_send(result);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1763 return;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1764 }
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1765
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1766 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
1767 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
1768
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1769 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
1770 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
1771 /* Unblock everyone */
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1772 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
1773
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1774 while (account->deny != NULL) {
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1775 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
1776 }
27181
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1777 } else if (item == NULL) {
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1778 /* An empty <block/> is bogus */
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1779 xmlnode *error, *x;
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1780 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
1781 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
1782
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1783 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
1784 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
1785 x = xmlnode_new_child(error, "bad-request");
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
1786 xmlnode_set_namespace(x, NS_XMPP_STANZAS);
27181
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1787
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1788 jabber_iq_send(result);
1a3c15400f3e Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents: 27176
diff changeset
1789 return;
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1790 } else {
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1791 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
1792 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
1793 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
1794 continue;
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1795
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1796 if (is_block)
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1797 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
1798 else
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1799 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
1800 }
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1801 }
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1802
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1803 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
1804 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
1805 jabber_iq_send(result);
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1806 }
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1807
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
1808 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
1809 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
1810 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
1811 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1812 xmlnode *blocklist, *item;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1813 PurpleAccount *account;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1814
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1815 blocklist = xmlnode_get_child_with_namespace(packet,
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
1816 "blocklist", NS_SIMPLE_BLOCKING);
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1817 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
1818
27176
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1819 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
1820 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1821
27175
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1822 /* 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
1823 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
1824 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
1825
e027ae421bf3 Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents: 27156
diff changeset
1826 /*
27176
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1827 * 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
1828 * 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
1829 */
27176
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1830 while (account->deny)
0af9ce7c0694 The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents: 27175
diff changeset
1831 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
1832
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1833 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
1834 while (item != NULL) {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1835 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
1836 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
1837 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
1838 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1839 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1840
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1841 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
1842 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1843 JabberIq *iq;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1844 xmlnode *blocklist;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1845
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1846 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
1847
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1848 blocklist = xmlnode_new_child(iq->node, "blocklist");
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
1849 xmlnode_set_namespace(blocklist, NS_SIMPLE_BLOCKING);
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1850
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1851 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
1852
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1853 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
1854 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1855
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1856 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
1857 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1858 JabberStream *js;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1859 JabberIq *iq;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1860 xmlnode *block, *item;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1861
29094
1d72af8f11dd jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents: 29085
diff changeset
1862 g_return_if_fail(who != NULL && *who != '\0');
1d72af8f11dd jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents: 29085
diff changeset
1863
1d72af8f11dd jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents: 29085
diff changeset
1864 js = purple_connection_get_protocol_data(gc);
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1865 if (js == NULL)
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1866 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1867
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1868 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
1869 {
29094
1d72af8f11dd jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents: 29085
diff changeset
1870 jabber_google_roster_add_deny(js, who);
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1871 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1872 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1873
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1874 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
1875 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1876 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
1877 _("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
1878 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1879 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1880
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1881 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
1882
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1883 block = xmlnode_new_child(iq->node, "block");
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
1884 xmlnode_set_namespace(block, NS_SIMPLE_BLOCKING);
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1885
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1886 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
1887 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
1888
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1889 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
1890 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1891
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1892 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
1893 {
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1894 JabberStream *js;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1895 JabberIq *iq;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1896 xmlnode *unblock, *item;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1897
29094
1d72af8f11dd jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents: 29085
diff changeset
1898 g_return_if_fail(who != NULL && *who != '\0');
1d72af8f11dd jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents: 29085
diff changeset
1899
1d72af8f11dd jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents: 29085
diff changeset
1900 js = purple_connection_get_protocol_data(gc);
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1901 if (js == NULL)
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1902 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1903
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1904 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
1905 {
29094
1d72af8f11dd jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents: 29085
diff changeset
1906 jabber_google_roster_rem_deny(js, who);
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1907 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1908 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1909
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1910 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
1911 return;
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1912
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1913 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
1914
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1915 unblock = xmlnode_new_child(iq->node, "unblock");
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
1916 xmlnode_set_namespace(unblock, NS_SIMPLE_BLOCKING);
25290
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1917
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1918 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
1919 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
1920
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1921 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
1922 }
033942580f51 Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents: 25242
diff changeset
1923
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1924 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
1925 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
1926
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1927 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
1928
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
1929 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
1930 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
1931 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
1932
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1933 /* 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
1934 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
1935
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1936 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
1937 }
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1938
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1939 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
1940 GList *feature;
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1941 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
1942 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
1943 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
1944 g_free(feat->namespace);
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1945 g_free(feature->data);
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
1946 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
1947 break;
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1948 }
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1949 }
17770
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1950 }
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1951
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1952 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
1953 {
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1954 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
1955 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
1956 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
1957 g_free(feature);
28760
a7129c0e7108 jabber: Oops. --leaks.
Paul Aurich <darkrain42@pidgin.im>
parents: 28734
diff changeset
1958 jabber_features = g_list_delete_link(jabber_features, jabber_features);
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1959 }
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1960 }
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
1961
30512
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1962 gint
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1963 jabber_identity_compare(gconstpointer a, gconstpointer b)
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1964 {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1965 const JabberIdentity *ac;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1966 const JabberIdentity *bc;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1967 gint cat_cmp;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1968 gint typ_cmp;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1969
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1970 ac = a;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1971 bc = b;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1972
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1973 if ((cat_cmp = strcmp(ac->category, bc->category)) == 0) {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1974 if ((typ_cmp = strcmp(ac->type, bc->type)) == 0) {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1975 if (!ac->lang && !bc->lang) {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1976 return 0;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1977 } else if (ac->lang && !bc->lang) {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1978 return 1;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1979 } else if (!ac->lang && bc->lang) {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1980 return -1;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1981 } else {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1982 return strcmp(ac->lang, bc->lang);
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1983 }
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1984 } else {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1985 return typ_cmp;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1986 }
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1987 } else {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1988 return cat_cmp;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1989 }
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1990 }
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1991
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1992 void jabber_add_identity(const gchar *category, const gchar *type,
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1993 const gchar *lang, const gchar *name)
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1994 {
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1995 GList *identity;
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1996 JabberIdentity *ident;
30512
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
1997
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
1998 /* 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
1999 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
2000 g_return_if_fail(type != NULL);
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2001
30512
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
2002 /* Check if this identity is already there... */
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
2003 for (identity = jabber_identities; identity; identity = identity->next) {
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
2004 JabberIdentity *id = identity->data;
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
2005 if (g_str_equal(id->category, category) &&
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
2006 g_str_equal(id->type, type) &&
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
2007 purple_strequal(id->lang, lang))
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
2008 return;
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
2009 }
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
2010
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
2011 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
2012 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
2013 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
2014 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
2015 ident->name = g_strdup(name);
30512
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
2016 jabber_identities = g_list_insert_sorted(jabber_identities, ident,
f0f51b3a3f30 jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents: 30474
diff changeset
2017 jabber_identity_compare);
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
2018 }
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
2019
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
2020 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
2021 {
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
2022 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
2023 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
2024 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
2025 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
2026 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
2027 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
2028 g_free(id);
28760
a7129c0e7108 jabber: Oops. --leaks.
Paul Aurich <darkrain42@pidgin.im>
parents: 28734
diff changeset
2029 jabber_identities = g_list_delete_link(jabber_identities, jabber_identities);
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
2030 }
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
2031 }
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
2032
26533
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
2033 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
2034 {
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
2035 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
2036 (!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
2037 }
5c74696c34d1 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents: 26531
diff changeset
2038
30056
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2039 static gboolean
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2040 inactivity_cb(gpointer data)
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2041 {
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2042 JabberStream *js = data;
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2043
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2044 /* We want whatever is sent to set this. It's okay because
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2045 * the eventloop unsets it via the return FALSE.
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2046 */
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2047 js->inactivity_timer = 0;
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2048
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2049 if (js->bosh)
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2050 jabber_bosh_connection_send_keepalive(js->bosh);
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2051 else
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2052 jabber_send_raw(js, "\t", 1);
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2053
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2054 return FALSE;
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2055 }
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2056
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2057 void jabber_stream_restart_inactivity_timer(JabberStream *js)
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2058 {
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2059 if (js->inactivity_timer != 0) {
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2060 purple_timeout_remove(js->inactivity_timer);
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2061 js->inactivity_timer = 0;
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2062 }
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2063
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2064 g_return_if_fail(js->max_inactivity > 0);
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2065
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2066 js->inactivity_timer =
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2067 purple_timeout_add_seconds(js->max_inactivity,
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2068 inactivity_cb, js);
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2069 }
24dcb476e62b jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents: 30036
diff changeset
2070
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
2071 const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2072 {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2073 return "jabber";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
2074 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4915
diff changeset
2075
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
2076 const char* jabber_list_emblem(PurpleBuddy *b)
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4915
diff changeset
2077 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2078 JabberStream *js;
13486
4ea1a712aaa3 [gaim-migrate @ 15861]
Daniel Atallah <datallah@pidgin.im>
parents: 13385
diff changeset
2079 JabberBuddy *jb = NULL;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2080 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b));
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2081
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2082 if(!gc)
15558
6fb7a0ad8a0b clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15524
diff changeset
2083 return NULL;
6fb7a0ad8a0b clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15524
diff changeset
2084
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2085 js = gc->proto_data;
13486
4ea1a712aaa3 [gaim-migrate @ 15861]
Daniel Atallah <datallah@pidgin.im>
parents: 13385
diff changeset
2086 if(js)
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2087 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
2088
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2089 if(!PURPLE_BUDDY_IS_ONLINE(b)) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2090 if(jb && (jb->subscription & JABBER_SUB_PENDING ||
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2091 !(jb->subscription & JABBER_SUB_TO)))
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2092 return "not-authorized";
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2093 }
27292
1e8a952548f9 Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <darkrain42@pidgin.im>
parents: 27291
diff changeset
2094
25577
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2095 if (jb) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2096 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
2097 if (jbr) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2098 const gchar *client_type =
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2099 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
2100
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2101 if (client_type) {
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2102 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
2103 return "mobile";
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2104 } 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
2105 return "external";
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2106 } 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
2107 return "hiptop";
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2108 } 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
2109 return "bot";
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2110 }
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2111 /* 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
2112 }
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2113 }
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2114 }
ca0b40451bbc Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents: 25573
diff changeset
2115
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2116 return NULL;
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4915
diff changeset
2117 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2118
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
2119 char *jabber_status_text(PurpleBuddy *b)
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
2120 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2121 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
2122 JabberBuddy *jb = NULL;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2123 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
2124 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
2125
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2126 if (gc && gc->proto_data)
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2127 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
2128
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2129 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
2130 ret = g_strdup(_("Not Authorized"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2131 } 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
2132 ret = g_strdup(jb->error_msg);
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2133 } else {
26868
5c99daf94155 Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <darkrain42@pidgin.im>
parents: 26860
diff changeset
2134 PurplePresence *presence = purple_buddy_get_presence(b);
27775
b8569a76e02e Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27697
diff changeset
2135 PurpleStatus *status = purple_presence_get_active_status(presence);
27779
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2136 const char *message;
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2137
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2138 if((message = purple_status_get_attr_string(status, "message"))) {
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2139 ret = g_markup_escape_text(message, -1);
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2140 } else if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2141 PurpleStatus *status = purple_presence_get_status(presence, "tune");
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2142 const char *title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE);
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2143 const char *artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST);
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2144 const char *album = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM);
ad70fa8a4ae2 merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27756 27775
diff changeset
2145 ret = purple_util_format_song_info(title, artist, album, NULL);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2146 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2147 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2148
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2149 return ret;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2150 }
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2151
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2152 static void
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2153 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
2154 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
2155 {
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2156 char *text = NULL;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2157 char *res = NULL;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2158 char *label, *value;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2159 const char *state;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2160
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2161 if(jbr->status) {
27775
b8569a76e02e Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27697
diff changeset
2162 text = g_markup_escape_text(jbr->status, -1);
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2163 }
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2164
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2165 if(jbr->name)
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2166 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
2167
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2168 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
2169 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
2170 g_free(text);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2171 text = NULL;
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2172 }
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2173
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2174 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
2175 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
2176
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2177 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
2178 g_free(label);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2179 g_free(value);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2180 g_free(text);
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2181
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2182 /* 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
2183 /* 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
2184 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
2185 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
2186 if (jbr->idle && multiple_resources) {
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2187 gchar *idle_str =
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2188 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
2189 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
2190 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
2191 g_free(idle_str);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2192 g_free(label);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2193 }
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2194 g_free(res);
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2195 }
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2196
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
2197 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
2198 {
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2199 JabberBuddy *jb;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2200 PurpleAccount *account;
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2201 PurpleConnection *gc;
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2202
12970
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12948
diff changeset
2203 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
2204
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2205 account = purple_buddy_get_account(b);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2206 g_return_if_fail(account != NULL);
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2207
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2208 gc = purple_account_get_connection(account);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2209 g_return_if_fail(gc != NULL);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2210 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
2211
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2212 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
2213
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
2214 if(jb) {
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2215 JabberBuddyResource *jbr = NULL;
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2216 PurplePresence *presence = purple_buddy_get_presence(b);
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
2217 const char *sub;
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2218 GList *l;
19920
7b0d20da73d0 Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@pidgin.im>
parents: 19897
diff changeset
2219 const char *mood;
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2220 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
2221 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
2222 JabberBuddyResource *top_jbr = jabber_buddy_find_resource(jb, NULL);
25842
8da3a69dfa55 Remove some unused variables
Marcus Lundblad <malu@pidgin.im>
parents: 25841
diff changeset
2223
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2224 /* 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
2225 if (top_jbr) {
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
2226 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
2227 multiple_resources);
67bc9c8a4b8d Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <malu@pidgin.im>
parents: 25842
diff changeset
2228 }
25842
8da3a69dfa55 Remove some unused variables
Marcus Lundblad <malu@pidgin.im>
parents: 25841
diff changeset
2229
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2230 for(l=jb->resources; l; l = l->next) {
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2231 jbr = l->data;
25840
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2232 /* the remaining resources */
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2233 if (jbr != top_jbr) {
f703af7527a6 Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25838
diff changeset
2234 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
2235 multiple_resources);
12944
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
2236 }
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2237 }
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2238
12948
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
2239 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
2240 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
2241
24912
9ae8349f0353 Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@pidgin.im>
parents: 24907
diff changeset
2242 status = purple_presence_get_status(presence, "mood");
9ae8349f0353 Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@pidgin.im>
parents: 24907
diff changeset
2243 mood = purple_status_get_attr_string(status, PURPLE_MOOD_NAME);
24905
dbe73df3dfa0 Check that mood is not the empty string, just to be safe.
Richard Laager <rlaager@pidgin.im>
parents: 24903
diff changeset
2244 if(mood && *mood) {
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
2245 const char *moodtext;
29412
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2246 /* find the mood */
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2247 PurpleMood *moods = jabber_get_moods(account);
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2248 const char *description = NULL;
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2249
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2250 for (; moods->mood ; moods++) {
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2251 if (purple_strequal(moods->mood, mood)) {
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2252 description = moods->description;
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2253 break;
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2254 }
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2255 }
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2256
24912
9ae8349f0353 Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@pidgin.im>
parents: 24907
diff changeset
2257 moodtext = purple_status_get_attr_string(status, PURPLE_MOOD_COMMENT);
24903
638ef56eb3c5 Do not show "Mood: mood ()" when there is no text.
Richard Laager <rlaager@pidgin.im>
parents: 24430
diff changeset
2258 if(moodtext && *moodtext) {
29412
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2259 char *moodplustext =
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2260 g_strdup_printf("%s (%s)", description ? _(description) : mood, moodtext);
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
2261
17780
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
2262 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
2263 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
2264 } else
29412
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2265 purple_notify_user_info_add_pair(user_info, _("Mood"),
c27d9bb60878 Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents: 29407
diff changeset
2266 description ? _(description) : mood);
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2267 }
22133
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2268 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
2269 PurpleStatus *tune = purple_presence_get_status(presence, "tune");
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2270 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
2271 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
2272 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
2273 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
2274 if (playing) {
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2275 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
2276 g_free(playing);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
2277 }
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
2278 }
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
2279
db906dc27472 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents: 25836
diff changeset
2280 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
2281 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
2282 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
2283 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
2284 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
2285 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
2286 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
2287 } 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
2288 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
2289 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
2290 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
2291 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
2292 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
2293 sub = _("None");
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
2294 }
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
2295
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
2296 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
2297
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2298 }
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
2299
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2300 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
2301 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
2302 }
4745
24867c379d37 [gaim-migrate @ 5060]
Nathan Walp <nwalp@pidgin.im>
parents: 4744
diff changeset
2303 }
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
2304 }
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
2305
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
2306 GList *jabber_status_types(PurpleAccount *account)
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
2307 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2308 PurpleStatusType *type;
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2309 GList *types = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2310 PurpleValue *priority_value;
24396
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2311 PurpleValue *buzz_enabled;
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2312
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2313 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2314 purple_value_set_int(priority_value, 1);
24396
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2315 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2316 purple_value_set_boolean(buzz_enabled, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2317 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2318 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_ONLINE),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2319 NULL, TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2320 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2321 "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
2322 "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
2323 "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
2324 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
24396
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2325 "buzz", _("Allow Buzz"), buzz_enabled,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2326 NULL);
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24905
diff changeset
2327 types = g_list_prepend(types, type);
9980
ea4241d66fd1 [gaim-migrate @ 10891]
Nathan Walp <nwalp@pidgin.im>
parents: 9954
diff changeset
2328
29407
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
2329
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
2330 type = purple_status_type_new_with_attrs(PURPLE_STATUS_MOOD,
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
2331 "mood", NULL, TRUE, TRUE, TRUE,
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
2332 PURPLE_MOOD_NAME, _("Mood Name"), purple_value_new(PURPLE_TYPE_STRING),
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
2333 PURPLE_MOOD_COMMENT, _("Mood Comment"), purple_value_new(PURPLE_TYPE_STRING),
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
2334 NULL);
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
2335 types = g_list_prepend(types, type);
e4140d21900d Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents: 29304
diff changeset
2336
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2337 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2338 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
2339 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
2340 purple_value_set_boolean(buzz_enabled, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2341 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2342 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_CHAT),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2343 _("Chatty"), TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2344 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2345 "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
2346 "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
2347 "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
2348 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
24396
7f2eddefcbf3 Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents: 24254
diff changeset
2349 "buzz", _("Allow Buzz"), buzz_enabled,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2350 NULL);
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24905
diff changeset
2351 types = g_list_prepend(types, type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2352
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2353 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2354 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
2355 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
2356 purple_value_set_boolean(buzz_enabled, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2357 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2358 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_AWAY),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2359 NULL, TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2360 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2361 "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
2362 "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
2363 "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
2364 "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
2365 "buzz", _("Allow Buzz"), buzz_enabled,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2366 NULL);
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24905
diff changeset
2367 types = g_list_prepend(types, type);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2368
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2369 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2370 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
2371 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
2372 purple_value_set_boolean(buzz_enabled, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2373 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
2374 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_XA),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2375 NULL, TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2376 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2377 "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
2378 "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
2379 "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
2380 "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
2381 "buzz", _("Allow Buzz"), buzz_enabled,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2382 NULL);
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24905
diff changeset
2383 types = g_list_prepend(types, type);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2384
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2385 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2386 purple_value_set_int(priority_value, 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2387 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2388 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_DND),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2389 _("Do Not Disturb"), TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2390 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2391 "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
2392 "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
2393 "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
2394 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
2395 NULL);
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24905
diff changeset
2396 types = g_list_prepend(types, type);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2397
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
2398 /*
8166
0a109d9655c7 [gaim-migrate @ 8878]
Nathan Walp <nwalp@pidgin.im>
parents: 8158
diff changeset
2399 if(js->protocol_version == JABBER_PROTO_0_9)
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24905
diff changeset
2400 "Invisible"
10009
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 9980
diff changeset
2401 */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2402
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2403 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
2404 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
2405 NULL, TRUE, TRUE, FALSE,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2406 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
2407 NULL);
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24905
diff changeset
2408 types = g_list_prepend(types, type);
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
2409
21193
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2410 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
2411 "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
2412 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
2413 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
2414 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
2415 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
2416 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
2417 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
2418 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
2419 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
2420 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
2421 NULL);
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24905
diff changeset
2422 types = g_list_prepend(types, type);
21193
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
2423
24907
13118548c74c Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents: 24905
diff changeset
2424 return g_list_reverse(types);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2425 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
2426
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
2427 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
2428 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
2429 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
2430 xmlnode *packet, gpointer data)
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2431 {
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
2432 if (type == JABBER_IQ_RESULT) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2433 purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2434 _("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
2435
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
2436 purple_account_set_password(js->gc->account, (char *)data);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2437 } else {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2438 char *msg = jabber_parse_error(js, packet, NULL);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2439
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2440 purple_notify_error(js->gc, _("Error changing password"),
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2441 _("Error changing password"), msg);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2442 g_free(msg);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2443 }
21129
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
2444
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
2445 g_free(data);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2446 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2447
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2448 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
2449 PurpleRequestFields *fields)
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2450 {
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2451 const char *p1, *p2;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2452 JabberIq *iq;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2453 xmlnode *query, *y;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2454
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2455 p1 = purple_request_fields_get_string(fields, "password1");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2456 p2 = purple_request_fields_get_string(fields, "password2");
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2457
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2458 if(strcmp(p1, p2)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2459 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
2460 return;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2461 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2462
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2463 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
2464
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2465 xmlnode_set_attrib(iq->node, "to", js->user->domain);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2466
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2467 query = xmlnode_get_child(iq->node, "query");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2468
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2469 y = xmlnode_new_child(query, "username");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2470 xmlnode_insert_data(y, js->user->node, -1);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2471 y = xmlnode_new_child(query, "password");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2472 xmlnode_insert_data(y, p1, -1);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2473
21129
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
2474 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
2475
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2476 jabber_iq_send(iq);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2477 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2478
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2479 static void jabber_password_change(PurplePluginAction *action)
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2480 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
2481
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2482 PurpleConnection *gc = (PurpleConnection *) action->context;
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2483 JabberStream *js = gc->proto_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2484 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2485 PurpleRequestFieldGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2486 PurpleRequestField *field;
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2487
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2488 fields = purple_request_fields_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2489 group = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2490 purple_request_fields_add_group(fields, group);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2491
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2492 field = purple_request_field_string_new("password1", _("Password"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2493 "", FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2494 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
2495 purple_request_field_set_required(field, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2496 purple_request_field_group_add_field(group, field);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2497
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2498 field = purple_request_field_string_new("password2", _("Password (again)"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2499 "", FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2500 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
2501 purple_request_field_set_required(field, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2502 purple_request_field_group_add_field(group, field);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2503
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2504 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
2505 _("Change XMPP Password"), _("Please enter your new password"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2506 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
2507 _("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
2508 purple_connection_get_account(gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
2509 js);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2510 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
2511
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
2512 GList *jabber_actions(PurplePlugin *plugin, gpointer context)
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2513 {
17782
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
2514 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
2515 JabberStream *js = gc->proto_data;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2516 GList *m = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2517 PurplePluginAction *act;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4316
diff changeset
2518
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2519 act = purple_plugin_action_new(_("Set User Info..."),
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12284
diff changeset
2520 jabber_setup_set_info);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
2521 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4316
diff changeset
2522
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
2523 /* if (js->protocol_options & CHANGE_PASSWORD) { */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2524 act = purple_plugin_action_new(_("Change Password..."),
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12284
diff changeset
2525 jabber_password_change);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
2526 m = g_list_append(m, act);
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
2527 /* } */
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2528
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2529 act = purple_plugin_action_new(_("Search for Users..."),
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12284
diff changeset
2530 jabber_user_search_begin);
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
2531 m = g_list_append(m, act);
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
2532
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
2533 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
2534
17782
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
2535 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
2536 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
2537
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
2538 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
2539 jabber_adhoc_init_server_commands(js, &m);
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
2540
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2541 return m;
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2542 }
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
2543
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
2544 PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name)
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2545 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2546 PurpleBlistNode *gnode, *cnode;
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2547 JabberID *jid;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2548
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2549 if(!(jid = jabber_id_new(name)))
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2550 return NULL;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2551
24945
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2552 for(gnode = purple_blist_get_root(); gnode;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2553 gnode = purple_blist_node_get_sibling_next(gnode)) {
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2554 for(cnode = purple_blist_node_get_first_child(gnode);
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2555 cnode;
6678a8c83797 Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24571
diff changeset
2556 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
2557 PurpleChat *chat = (PurpleChat*)cnode;
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2558 const char *room, *server;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2559 GHashTable *components;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2560 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2561 continue;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2562
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2563 if (purple_chat_get_account(chat) != account)
8011
e9ac8bfe26da [gaim-migrate @ 8691]
Nathan Walp <nwalp@pidgin.im>
parents: 8010
diff changeset
2564 continue;
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2565
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2566 components = purple_chat_get_components(chat);
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2567 if(!(room = g_hash_table_lookup(components, "room")))
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2568 continue;
24398
4865c2ee6ea8 Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24254
diff changeset
2569 if(!(server = g_hash_table_lookup(components, "server")))
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2570 continue;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2571
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8135
diff changeset
2572 if(jid->node && jid->domain &&
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8135
diff changeset
2573 !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
2574 jabber_id_free(jid);
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2575 return chat;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2576 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2577 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2578 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2579 jabber_id_free(jid);
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2580 return NULL;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2581 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
2582
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
2583 void jabber_convo_closed(PurpleConnection *gc, const char *who)
8400
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2584 {
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2585 JabberStream *js = gc->proto_data;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2586 JabberID *jid;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2587 JabberBuddy *jb;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2588 JabberBuddyResource *jbr;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2589
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2590 if(!(jid = jabber_id_new(who)))
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2591 return;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2592
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2593 if((jb = jabber_buddy_find(js, who, TRUE)) &&
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2594 (jbr = jabber_buddy_find_resource(jb, jid->resource))) {
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2595 if(jbr->thread_id) {
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2596 g_free(jbr->thread_id);
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2597 jbr->thread_id = NULL;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2598 }
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2599 }
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2600
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2601 jabber_id_free(jid);
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2602 }
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
2603
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2604
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2605 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
2606 xmlnode *packet,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
2607 PurpleConnectionError *reason)
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2608 {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2609 xmlnode *error;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2610 const char *code = NULL, *text = NULL;
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
2611 const char *xmlns = xmlnode_get_namespace(packet);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2612 char *cdata = NULL;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2613
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2614 #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
2615 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
2616
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2617 if((error = xmlnode_get_child(packet, "error"))) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2618 cdata = xmlnode_get_data(error);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2619 code = xmlnode_get_attrib(error, "code");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2620
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2621 /* Stanza errors */
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2622 if(xmlnode_get_child(error, "bad-request")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2623 text = _("Bad Request");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2624 } else if(xmlnode_get_child(error, "conflict")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2625 text = _("Conflict");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2626 } else if(xmlnode_get_child(error, "feature-not-implemented")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2627 text = _("Feature Not Implemented");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2628 } else if(xmlnode_get_child(error, "forbidden")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2629 text = _("Forbidden");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2630 } else if(xmlnode_get_child(error, "gone")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2631 text = _("Gone");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2632 } else if(xmlnode_get_child(error, "internal-server-error")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2633 text = _("Internal Server Error");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2634 } else if(xmlnode_get_child(error, "item-not-found")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2635 text = _("Item Not Found");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2636 } 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
2637 text = _("Malformed XMPP ID");
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2638 } else if(xmlnode_get_child(error, "not-acceptable")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2639 text = _("Not Acceptable");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2640 } else if(xmlnode_get_child(error, "not-allowed")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2641 text = _("Not Allowed");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2642 } else if(xmlnode_get_child(error, "not-authorized")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2643 text = _("Not Authorized");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2644 } else if(xmlnode_get_child(error, "payment-required")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2645 text = _("Payment Required");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2646 } else if(xmlnode_get_child(error, "recipient-unavailable")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2647 text = _("Recipient Unavailable");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2648 } else if(xmlnode_get_child(error, "redirect")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2649 /* XXX */
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2650 } else if(xmlnode_get_child(error, "registration-required")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2651 text = _("Registration Required");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2652 } else if(xmlnode_get_child(error, "remote-server-not-found")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2653 text = _("Remote Server Not Found");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2654 } else if(xmlnode_get_child(error, "remote-server-timeout")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2655 text = _("Remote Server Timeout");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2656 } else if(xmlnode_get_child(error, "resource-constraint")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2657 text = _("Server Overloaded");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2658 } else if(xmlnode_get_child(error, "service-unavailable")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2659 text = _("Service Unavailable");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2660 } else if(xmlnode_get_child(error, "subscription-required")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2661 text = _("Subscription Required");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2662 } else if(xmlnode_get_child(error, "unexpected-request")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2663 text = _("Unexpected Request");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2664 } else if(xmlnode_get_child(error, "undefined-condition")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2665 text = _("Unknown Error");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2666 }
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
2667 } else if(xmlns && !strcmp(xmlns, 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
2668 /* 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
2669 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2670 if(xmlnode_get_child(packet, "aborted")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2671 text = _("Authorization Aborted");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2672 } else if(xmlnode_get_child(packet, "incorrect-encoding")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2673 text = _("Incorrect encoding in authorization");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2674 } else if(xmlnode_get_child(packet, "invalid-authzid")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2675 text = _("Invalid authzid");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2676 } else if(xmlnode_get_child(packet, "invalid-mechanism")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2677 text = _("Invalid Authorization Mechanism");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2678 } 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
2679 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2680 text = _("Authorization mechanism too weak");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2681 } 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
2682 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
2683 /* 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
2684 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
2685 purple_account_set_password(js->gc->account, NULL);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2686 text = _("Not Authorized");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2687 } else if(xmlnode_get_child(packet, "temporary-auth-failure")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2688 text = _("Temporary Authentication Failure");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2689 } else {
21284
69472e4a5458 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents: 21281
diff changeset
2690 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2691 text = _("Authentication Failure");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2692 }
15979
acfbd09bc217 Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <markdoliner@pidgin.im>
parents: 15977
diff changeset
2693 } 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
2694 (!strcmp(packet->name, "error") && xmlns &&
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
2695 !strcmp(xmlns, NS_XMPP_STREAMS))) {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2696 /* Most common reason as default: */
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
2697 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
8402
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2698 if(xmlnode_get_child(packet, "bad-format")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2699 text = _("Bad Format");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2700 } else if(xmlnode_get_child(packet, "bad-namespace-prefix")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2701 text = _("Bad Namespace Prefix");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2702 } else if(xmlnode_get_child(packet, "conflict")) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
2703 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE);
8402
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2704 text = _("Resource Conflict");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2705 } else if(xmlnode_get_child(packet, "connection-timeout")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2706 text = _("Connection Timeout");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2707 } else if(xmlnode_get_child(packet, "host-gone")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2708 text = _("Host Gone");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2709 } else if(xmlnode_get_child(packet, "host-unknown")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2710 text = _("Host Unknown");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2711 } else if(xmlnode_get_child(packet, "improper-addressing")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2712 text = _("Improper Addressing");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2713 } else if(xmlnode_get_child(packet, "internal-server-error")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2714 text = _("Internal Server Error");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2715 } else if(xmlnode_get_child(packet, "invalid-id")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2716 text = _("Invalid ID");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2717 } else if(xmlnode_get_child(packet, "invalid-namespace")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2718 text = _("Invalid Namespace");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2719 } else if(xmlnode_get_child(packet, "invalid-xml")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2720 text = _("Invalid XML");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2721 } else if(xmlnode_get_child(packet, "nonmatching-hosts")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2722 text = _("Non-matching Hosts");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2723 } else if(xmlnode_get_child(packet, "not-authorized")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2724 text = _("Not Authorized");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2725 } else if(xmlnode_get_child(packet, "policy-violation")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2726 text = _("Policy Violation");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2727 } else if(xmlnode_get_child(packet, "remote-connection-failed")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2728 text = _("Remote Connection Failed");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2729 } else if(xmlnode_get_child(packet, "resource-constraint")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2730 text = _("Resource Constraint");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2731 } else if(xmlnode_get_child(packet, "restricted-xml")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2732 text = _("Restricted XML");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2733 } else if(xmlnode_get_child(packet, "see-other-host")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2734 text = _("See Other Host");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2735 } else if(xmlnode_get_child(packet, "system-shutdown")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2736 text = _("System Shutdown");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2737 } else if(xmlnode_get_child(packet, "undefined-condition")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2738 text = _("Undefined Condition");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2739 } else if(xmlnode_get_child(packet, "unsupported-encoding")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2740 text = _("Unsupported Encoding");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2741 } else if(xmlnode_get_child(packet, "unsupported-stanza-type")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2742 text = _("Unsupported Stanza Type");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2743 } else if(xmlnode_get_child(packet, "unsupported-version")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2744 text = _("Unsupported Version");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2745 } else if(xmlnode_get_child(packet, "xml-not-well-formed")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2746 text = _("XML Not Well Formed");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2747 } else {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2748 text = _("Stream Error");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2749 }
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2750 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2751
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2752 #undef SET_REASON
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2753
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2754 if(text || cdata) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2755 char *ret = g_strdup_printf("%s%s%s", code ? code : "",
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2756 code ? ": " : "", text ? text : cdata);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2757 g_free(cdata);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2758 return ret;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2759 } else {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2760 return NULL;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2761 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2762 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2763
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2764 static PurpleCmdRet jabber_cmd_chat_config(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2765 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2766 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2767 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
2768
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2769 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
2770 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
2771
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2772 jabber_chat_request_room_configure(chat);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2773 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2774 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2775
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2776 static PurpleCmdRet jabber_cmd_chat_register(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2777 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2778 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2779 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
2780
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2781 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
2782 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
2783
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2784 jabber_chat_register(chat);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2785 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2786 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2787
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2788 static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2789 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2790 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2791 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
2792
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2793 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
2794 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
2795
26859
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2796 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
2797 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
2798 else {
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2799 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
2800 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
2801
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2802 if (cur) {
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2803 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
2804 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
2805 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
2806 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
2807 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
2808 } else
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2809 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
2810 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
2811 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
2812 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
2813 }
8175186cf34a Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents: 26798
diff changeset
2814
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2815 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2816 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2817
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2818 static PurpleCmdRet jabber_cmd_chat_nick(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2819 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2820 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2821 JabberChat *chat = jabber_chat_find_by_conv(conv);
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2822
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2823 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2824 return PURPLE_CMD_RET_FAILED;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2825
28734
886d6c5e8f9a jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents: 28702
diff changeset
2826 if (!jabber_resourceprep_validate(args[0])) {
886d6c5e8f9a jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents: 28702
diff changeset
2827 *error = g_strdup(_("Invalid nickname"));
886d6c5e8f9a jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents: 28702
diff changeset
2828 return PURPLE_CMD_RET_FAILED;
886d6c5e8f9a jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents: 28702
diff changeset
2829 }
886d6c5e8f9a jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents: 28702
diff changeset
2830
886d6c5e8f9a jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents: 28702
diff changeset
2831 if (jabber_chat_change_nick(chat, args[0]))
886d6c5e8f9a jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents: 28702
diff changeset
2832 return PURPLE_CMD_RET_OK;
886d6c5e8f9a jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents: 28702
diff changeset
2833 else
886d6c5e8f9a jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents: 28702
diff changeset
2834 return PURPLE_CMD_RET_FAILED;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2835 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2836
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2837 static PurpleCmdRet jabber_cmd_chat_part(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2838 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2839 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2840 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
2841
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2842 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
2843 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
2844
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2845 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
2846 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2847 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2848
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2849 static PurpleCmdRet jabber_cmd_chat_ban(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2850 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2851 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2852 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2853
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2854 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2855 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2856
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2857 if(!jabber_chat_ban_user(chat, args[0], args[1])) {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2858 *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
2859 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2860 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2861
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2862 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2863 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2864
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2865 static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv,
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2866 const char *cmd, char **args, char **error, void *data)
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2867 {
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2868 JabberChat *chat = jabber_chat_find_by_conv(conv);
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2869
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2870 if (!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2871 return PURPLE_CMD_RET_FAILED;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2872
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2873 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
2874 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
2875 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
2876 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
2877 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
2878 *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
2879 return PURPLE_CMD_RET_FAILED;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2880 }
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2881
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2882 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
2883 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
2884 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
2885
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2886 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
2887 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
2888 *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
2889 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
2890 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
2891 }
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2892
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2893 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
2894 } else {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2895 jabber_chat_affiliation_list(chat, args[0]);
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2896 }
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2897
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2898 return PURPLE_CMD_RET_OK;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2899 }
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2900
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2901 static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv,
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2902 const char *cmd, char **args, char **error, void *data)
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2903 {
19217
ee1aa7e4c462 Fix uninitialized variable access.
Daniel Atallah <datallah@pidgin.im>
parents: 18986
diff changeset
2904 JabberChat *chat = jabber_chat_find_by_conv(conv);
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2905
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2906 if (!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2907 return PURPLE_CMD_RET_FAILED;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2908
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2909 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
2910 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
2911 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
2912 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
2913 *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
2914 return PURPLE_CMD_RET_FAILED;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2915 }
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2916
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2917 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
2918 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
2919 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
2920
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2921 for (i = 0; nicks[i]; i++)
29400
8d8ad40c9c7d jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <darkrain42@pidgin.im>
parents: 29398
diff changeset
2922 if (!jabber_chat_role_user(chat, nicks[i], args[0], NULL)) {
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2923 *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
2924 args[0], nicks[i]);
29398
3c31c5db18e9 jabber: Possible leaks--;
Paul Aurich <darkrain42@pidgin.im>
parents: 29370
diff changeset
2925 g_strfreev(nicks);
27027
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2926 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
2927 }
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2928
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2929 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
2930 } else {
f3129efa65ea Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents: 27002
diff changeset
2931 jabber_chat_role_list(chat, args[0]);
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2932 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2933 return PURPLE_CMD_RET_OK;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2934 }
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2935
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2936 static PurpleCmdRet jabber_cmd_chat_invite(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2937 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2938 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2939 if(!args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2940 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2941
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2942 jabber_chat_invite(purple_conversation_get_gc(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2943 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
2944 args[0]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2945
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2946 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2947 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2948
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2949 static PurpleCmdRet jabber_cmd_chat_join(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2950 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2951 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2952 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2953 GHashTable *components;
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2954
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2955 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2956 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2957
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2958 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
2959
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2960 g_hash_table_replace(components, "room", args[0]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2961 g_hash_table_replace(components, "server", chat->server);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2962 g_hash_table_replace(components, "handle", chat->handle);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2963 if(args[1])
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2964 g_hash_table_replace(components, "password", args[1]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2965
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2966 jabber_chat_join(purple_conversation_get_gc(conv), components);
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2967
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2968 g_hash_table_destroy(components);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2969 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2970 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2971
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2972 static PurpleCmdRet jabber_cmd_chat_kick(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2973 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2974 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2975 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2976
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2977 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2978 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2979
29400
8d8ad40c9c7d jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <darkrain42@pidgin.im>
parents: 29398
diff changeset
2980 if(!jabber_chat_role_user(chat, args[0], "none", args[1])) {
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2981 *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
2982 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2983 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2984
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2985 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2986 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2987
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2988 static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2989 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2990 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2991 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2992 char *who;
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2993
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2994 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
2995 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
2996
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2997 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
2998
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2999 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
3000
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
3001 g_free(who);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
3002 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
3003 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
3004
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
3005 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
3006 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
3007 {
26089
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
3008 PurpleAccount *account;
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
3009 PurpleConnection *pc;
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
3010
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
3011 if(!args || !args[0])
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
3012 return PURPLE_CMD_RET_FAILED;
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
3013
26089
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
3014 account = purple_conversation_get_account(conv);
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
3015 pc = purple_account_get_connection(account);
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
3016
804e625addbc Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents: 26088
diff changeset
3017 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
3018 *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
3019 return PURPLE_CMD_RET_FAILED;
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
3020 }
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
3021
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
3022 return PURPLE_CMD_RET_OK;
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
3023 }
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
3024
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3025 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
3026
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3027 JabberBuddy *jb;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3028 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
3029 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
3030 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
3031 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
3032 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
3033 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
3034
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3035 if(!username)
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3036 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3037
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3038 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
3039 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
3040 *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
3041 "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
3042 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3043 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3044
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3045 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
3046 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
3047 *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
3048 alias);
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3049 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3050 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3051
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3052 if (jabber_resource_has_capability(jbr, NS_ATTENTION)) {
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3053 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
3054 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
3055
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3056 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
3057 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
3058 g_free(to);
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3059
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3060 /* 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
3061 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
3062
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3063 buzz = xmlnode_new_child(msg, "attention");
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3064 xmlnode_set_namespace(buzz, NS_ATTENTION);
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3065
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3066 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
3067 xmlnode_free(msg);
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3068
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3069 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
3070 } 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
3071 *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
3072 "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
3073 return FALSE;
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3074 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3075 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3076
17822
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
3077 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv,
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
3078 const char *cmd, char **args, char **error, void *data)
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
3079 {
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
3080 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
3081 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
3082 gchar *description;
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3083 PurpleBuddy *buddy;
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3084 const char *alias;
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3085 PurpleAttentionType *attn =
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3086 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
3087
24428
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3088 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
3089 /* 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
3090 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
3091 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
3092 } else {
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3093 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
3094 }
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3095 } else {
002e089bfb28 Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents: 24397
diff changeset
3096 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
3097 }
26042
4dabdb5fe213 Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26041
diff changeset
3098
26048
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3099 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
3100 if (buddy != NULL)
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3101 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
3102 else
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3103 alias = who;
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3104
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3105 description =
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3106 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
3107 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
3108 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
3109 g_free(description);
9eeed41d0004 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents: 25948
diff changeset
3110 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
3111 }
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
3112
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3113 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
3114 {
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3115 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
3116
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3117 if (!types) {
22225
6cd802a8c5ad This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22155
diff changeset
3118 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
3119 _("%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
3120 }
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3121
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3122 return types;
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3123 }
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3124
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3125 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
3126 {
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3127 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
3128 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
3129
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3130 if (!_jabber_send_buzz(js, username, &error)) {
29787
645de6afcc0a jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents: 29771
diff changeset
3131 PurpleAccount *account = purple_connection_get_account(gc);
645de6afcc0a jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents: 29771
diff changeset
3132 PurpleConversation *conv =
645de6afcc0a jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents: 29771
diff changeset
3133 purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, username, account);
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3134 purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)");
29787
645de6afcc0a jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents: 29771
diff changeset
3135
645de6afcc0a jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents: 29771
diff changeset
3136 if (conv) {
645de6afcc0a jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents: 29771
diff changeset
3137 purple_conversation_write(conv, username, error, PURPLE_MESSAGE_ERROR,
645de6afcc0a jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents: 29771
diff changeset
3138 time(NULL));
645de6afcc0a jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents: 29771
diff changeset
3139 }
645de6afcc0a jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents: 29771
diff changeset
3140
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3141 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
3142 return FALSE;
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3143 }
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3144
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
3145 return TRUE;
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3146 }
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3147
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
3148
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
3149 gboolean jabber_offline_message(const PurpleBuddy *buddy)
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
3150 {
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
3151 return TRUE;
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
3152 }
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
3153
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3154 #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
3155 gboolean
ef06285f3b64 Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents: 26666
diff changeset
3156 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
3157 {
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3158 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
3159 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
3160
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3161 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
3162 }
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3163
27202
5244a5510e0e Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents: 27193
diff changeset
3164 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
3165 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
3166 {
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3167 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
3168 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
3169
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3170 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
3171 }
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3172
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3173 typedef struct {
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3174 PurpleAccount *account;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3175 gchar *who;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3176 PurpleMediaSessionType type;
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
3177
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3178 } JabberMediaRequest;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3179
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3180 static void
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3181 jabber_media_cancel_cb(JabberMediaRequest *request,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3182 PurpleRequestFields *fields)
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3183 {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3184 g_free(request->who);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3185 g_free(request);
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
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3188 static void
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3189 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
3190 {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3191 PurpleRequestField *field =
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3192 purple_request_fields_get_field(fields, "resource");
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3193 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
3194 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
3195 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
3196 (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
3197 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
3198
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3199 g_free(who);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3200 g_free(request->who);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3201 g_free(request);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3202 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3203 #endif
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3204
26495
52846ebe1c7d Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents: 26455
diff changeset
3205 gboolean
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
3206 jabber_initiate_media(PurpleAccount *account, const char *who,
26108
8d0fd2f195aa Changed PurpleMediaStreamType to PurpleMediaSessionType.
Michael Ruprecht <maiku@pidgin.im>
parents: 26106
diff changeset
3207 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
3208 {
26454
94130b583e0b Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents: 26399
diff changeset
3209 #ifdef USE_VV
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3210 JabberStream *js = (JabberStream *)
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3211 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
3212 JabberBuddy *jb;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3213 JabberBuddyResource *jbr = NULL;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3214 char *resource;
26205
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3215
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3216 if (!js) {
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3217 purple_debug_error("jabber",
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3218 "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
3219 return FALSE;
26205
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3220 }
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3221
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3222
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3223 if((resource = jabber_get_resource(who)) != NULL) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3224 /* 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
3225 * default or anything, just do it */
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 jb = jabber_buddy_find(js, who, FALSE);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3228 jbr = jabber_buddy_find_resource(jb, resource);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3229 g_free(resource);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3230
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3231 if (type & PURPLE_MEDIA_AUDIO &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3232 !jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3233 JINGLE_APP_RTP_SUPPORT_AUDIO) &&
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3234 jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE))
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3235 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
3236 else
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3237 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
3238 }
f20bb7e9e311 Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents: 26186
diff changeset
3239
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3240 jb = jabber_buddy_find(js, who, FALSE);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3241
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3242 if(!jb || !jb->resources) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3243 /* 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
3244 * 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
3245 * 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
3246 char *msg;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3247
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3248 if(!jb) {
26647
89bcc7bce53e Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26643
diff changeset
3249 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
3250 } else if(jb->subscription & JABBER_SUB_TO) {
26647
89bcc7bce53e Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26643
diff changeset
3251 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
3252 } else {
26647
89bcc7bce53e Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26643
diff changeset
3253 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
3254 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3255
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3256 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
3257 _("Media Initiation Failed"), msg);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3258 g_free(msg);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3259 return FALSE;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3260 } else if(!jb->resources->next) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3261 /* 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
3262 * 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
3263 gchar *name;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3264 gboolean result;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3265 jbr = jb->resources->data;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3266 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
3267 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
3268 g_free(name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3269 return result;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3270 } else {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3271 /* we've got multiple resources,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3272 * 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
3273 GList *l;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3274 char *msg;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3275 PurpleRequestFields *fields;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3276 PurpleRequestField *field = purple_request_field_choice_new(
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3277 "resource", _("Resource"), 0);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3278 PurpleRequestFieldGroup *group;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3279 JabberMediaRequest *request;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3280
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3281 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
3282 {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3283 JabberBuddyResource *ljbr = l->data;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3284 PurpleMediaCaps caps;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3285 gchar *name;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3286 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
3287 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
3288 g_free(name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3289
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3290 if ((type & PURPLE_MEDIA_AUDIO) &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3291 (type & PURPLE_MEDIA_VIDEO)) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3292 if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3293 jbr = ljbr;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3294 purple_request_field_choice_add(
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3295 field, jbr->name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3296 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3297 } else if (type & (PURPLE_MEDIA_AUDIO) &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3298 (caps & PURPLE_MEDIA_CAPS_AUDIO)) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3299 jbr = ljbr;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3300 purple_request_field_choice_add(
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3301 field, jbr->name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3302 }else if (type & (PURPLE_MEDIA_VIDEO) &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3303 (caps & PURPLE_MEDIA_CAPS_VIDEO)) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3304 jbr = ljbr;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3305 purple_request_field_choice_add(
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3306 field, jbr->name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3307 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3308 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3309
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3310 if (jbr == NULL) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3311 purple_debug_error("jabber",
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3312 "No resources available\n");
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3313 return FALSE;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3314 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3315
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3316 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
3317 field)) <= 1) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3318 gchar *name;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3319 gboolean result;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3320 purple_request_field_destroy(field);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3321 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
3322 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
3323 g_free(name);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3324 return result;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3325 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3326
26647
89bcc7bce53e Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26643
diff changeset
3327 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
3328 fields = purple_request_fields_new();
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3329 group = purple_request_field_group_new(NULL);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3330 request = g_new0(JabberMediaRequest, 1);
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3331 request->account = account;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3332 request->who = g_strdup(who);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3333 request->type = type;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3334
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3335 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
3336 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
3337 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
3338 NULL, fields, _("Initiate Media"),
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3339 G_CALLBACK(jabber_media_ok_cb), _("Cancel"),
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3340 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
3341 account, who, NULL, request);
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3342
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3343 g_free(msg);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3344 return TRUE;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3345 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3346 #endif
26495
52846ebe1c7d Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents: 26455
diff changeset
3347 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
3348 }
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
3349
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3350 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
3351 {
26454
94130b583e0b Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents: 26399
diff changeset
3352 #ifdef USE_VV
26746
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3353 JabberStream *js = (JabberStream *)
2a2d45ac9774 Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents: 26699
diff changeset
3354 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
3355 JabberBuddy *jb;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3356 JabberBuddyResource *jbr;
29345
5932dfc04845 Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29344
diff changeset
3357 PurpleMediaCaps total = PURPLE_MEDIA_CAPS_NONE;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3358 gchar *resource;
29344
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3359 GList *specific = NULL, *l;
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
3360
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
3361 if (!js) {
26632
e4fb60cb05a7 Demote debug error to info.
Michael Ruprecht <maiku@pidgin.im>
parents: 26495
diff changeset
3362 purple_debug_info("jabber",
e4fb60cb05a7 Demote debug error to info.
Michael Ruprecht <maiku@pidgin.im>
parents: 26495
diff changeset
3363 "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
3364 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
3365 }
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
3366
29344
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3367 jb = jabber_buddy_find(js, who, FALSE);
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3368
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3369 if (!jb || !jb->resources) {
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3370 /* no resources online, we're trying to get caps for someone
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3371 * whose presence we're not subscribed to, or
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3372 * someone who is offline. */
29345
5932dfc04845 Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29344
diff changeset
3373 return total;
29344
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3374
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3375 } else if ((resource = jabber_get_resource(who)) != NULL) {
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3376 /* 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
3377 * default or anything, just do it */
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3378 jbr = jabber_buddy_find_resource(jb, resource);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3379 g_free(resource);
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3380
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3381 if (!jbr) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3382 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
3383 " Can't find resource %s\n", who);
29345
5932dfc04845 Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29344
diff changeset
3384 return total;
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3385 }
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3386
29344
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3387 l = specific = g_list_prepend(specific, jbr);
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3388
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3389 } else {
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3390 /* we've got multiple resources, combine their caps */
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3391 l = jb->resources;
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3392 }
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3393
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3394 for (; l; l = l->next) {
29345
5932dfc04845 Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29344
diff changeset
3395 PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE;
29344
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3396 jbr = l->data;
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3397
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3398 if (jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3399 JINGLE_APP_RTP_SUPPORT_AUDIO))
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3400 caps |= PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION |
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3401 PURPLE_MEDIA_CAPS_AUDIO;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3402 if (jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3403 JINGLE_APP_RTP_SUPPORT_VIDEO))
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3404 caps |= PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION |
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3405 PURPLE_MEDIA_CAPS_VIDEO;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3406 if (caps & PURPLE_MEDIA_CAPS_AUDIO && caps &
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3407 PURPLE_MEDIA_CAPS_VIDEO)
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3408 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3409 if (caps != PURPLE_MEDIA_CAPS_NONE) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3410 if (!jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3411 JINGLE_TRANSPORT_ICEUDP) &&
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3412 !jabber_resource_has_capability(jbr,
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3413 JINGLE_TRANSPORT_RAWUDP)) {
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3414 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
3415 "support the same transport types\n");
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3416 caps = PURPLE_MEDIA_CAPS_NONE;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3417 } else
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3418 caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION |
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3419 PURPLE_MEDIA_CAPS_CHANGE_DIRECTION;
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3420 }
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3421 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE)) {
26643
401d7a92ecb1 Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents: 26632
diff changeset
3422 caps |= PURPLE_MEDIA_CAPS_AUDIO;
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3423 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VIDEO))
27202
5244a5510e0e Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents: 27193
diff changeset
3424 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
5244a5510e0e Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents: 27193
diff changeset
3425 }
29345
5932dfc04845 Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29344
diff changeset
3426
5932dfc04845 Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29344
diff changeset
3427 total |= caps;
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
3428 }
26170
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
3429
29344
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3430 if (specific) {
362c4882de89 Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29264
diff changeset
3431 g_list_free(specific);
26170
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
3432 }
26316
950c0d491c0d Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26292
diff changeset
3433
29345
5932dfc04845 Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29344
diff changeset
3434 return total;
26454
94130b583e0b Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents: 26399
diff changeset
3435 #else
94130b583e0b Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents: 26399
diff changeset
3436 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
3437 #endif
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
3438 }
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
3439
28879
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3440 gboolean jabber_can_receive_file(PurpleConnection *gc, const char *who)
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3441 {
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3442 JabberStream *js = gc->proto_data;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3443
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3444 if (js) {
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3445 JabberBuddy *jb = jabber_buddy_find(js, who, FALSE);
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3446 GList *iter;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3447 gboolean has_resources_without_caps = FALSE;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3448
28928
7c6adca0766f jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents: 28879
diff changeset
3449 /* if we didn't find a JabberBuddy, we don't have presence for this
7c6adca0766f jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents: 28879
diff changeset
3450 buddy, let's assume they can receive files, disco should tell us
7c6adca0766f jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents: 28879
diff changeset
3451 when actually trying */
7c6adca0766f jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents: 28879
diff changeset
3452 if (jb == NULL)
7c6adca0766f jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents: 28879
diff changeset
3453 return TRUE;
7c6adca0766f jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents: 28879
diff changeset
3454
28879
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3455 /* find out if there is any resources without caps */
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3456 for (iter = jb->resources; iter ; iter = g_list_next(iter)) {
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3457 JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3458
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3459 if (!jabber_resource_know_capabilities(jbr)) {
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3460 has_resources_without_caps = TRUE;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3461 }
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3462 }
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3463
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3464 if (has_resources_without_caps) {
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3465 /* there is at least one resource which we don't have caps for,
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3466 let's assume they can receive files... */
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3467 return TRUE;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3468 } else {
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3469 /* we have caps for all the resources, see if at least one has
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3470 right caps */
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3471 for (iter = jb->resources; iter ; iter = g_list_next(iter)) {
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3472 JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3473
30474
3f649d2041db jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <malu@pidgin.im>
parents: 30458
diff changeset
3474 if (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER)
28879
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3475 && (jabber_resource_has_capability(jbr,
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
3476 NS_BYTESTREAMS)
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3477 || jabber_resource_has_capability(jbr, NS_IBB))) {
28879
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3478 return TRUE;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3479 }
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3480 }
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3481 return FALSE;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3482 }
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3483 } else {
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3484 return TRUE;
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3485 }
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3486 }
27cc8217e86e jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents: 28832
diff changeset
3487
29843
5caad147921f jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <darkrain42@pidgin.im>
parents: 29827
diff changeset
3488 static PurpleCmdRet
29827
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3489 jabber_cmd_mood(PurpleConversation *conv,
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3490 const char *cmd, char **args, char **error, void *data)
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3491 {
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3492 JabberStream *js = conv->account->gc->proto_data;
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3493
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3494 if (js->pep) {
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3495 /* if no argument was given, unset mood */
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3496 if (!args | !args[0]) {
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3497 jabber_mood_set(js, NULL, NULL);
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3498 } else if (!args[1]) {
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3499 jabber_mood_set(js, args[0], NULL);
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3500 } else {
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3501 jabber_mood_set(js, args[0], args[1]);
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3502 }
29843
5caad147921f jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <darkrain42@pidgin.im>
parents: 29827
diff changeset
3503
5caad147921f jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <darkrain42@pidgin.im>
parents: 29827
diff changeset
3504 return PURPLE_CMD_RET_OK;
29827
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3505 } else {
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3506 /* account does not support PEP, can't set a mood */
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3507 purple_conversation_write(conv, NULL,
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3508 _("Account does not support PEP, can't set mood"),
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3509 PURPLE_MESSAGE_ERROR, time(NULL));
29843
5caad147921f jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <darkrain42@pidgin.im>
parents: 29827
diff changeset
3510 return PURPLE_CMD_RET_FAILED;
29827
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3511 }
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3512 }
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3513
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3514 static void jabber_register_commands(PurplePlugin *plugin)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3515 {
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3516 GSList *commands = NULL;
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3517 PurpleCmdId id;
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3518 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
3519 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3520 "prpl-jabber", jabber_cmd_chat_config,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3521 _("config: Configure a chat room."), NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3522 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3523
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3524 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
3525 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3526 "prpl-jabber", jabber_cmd_chat_config,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3527 _("configure: Configure a chat room."), NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3528 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3529
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3530 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
3531 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3532 "prpl-jabber", jabber_cmd_chat_nick,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3533 _("nick &lt;new nickname&gt;: Change your nickname."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3534 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3535 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3536
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3537 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
3538 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
3539 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
28702
245346a2b0a9 jabber: Correct the /part command's help.
Paul Aurich <darkrain42@pidgin.im>
parents: 28656
diff changeset
3540 jabber_cmd_chat_part, _("part [message]: Leave the room."),
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3541 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3542 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3543
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3544 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
3545 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3546 "prpl-jabber", jabber_cmd_chat_register,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3547 _("register: Register with a chat room."), NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3548 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3549
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3550 /* 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
3551 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
3552 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
3553 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3554 jabber_cmd_chat_topic,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3555 _("topic [new topic]: View or change the topic."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3556 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3557 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3558
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3559 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
3560 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
3561 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3562 jabber_cmd_chat_ban,
22759
1ab25e736b3d Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents: 22587
diff changeset
3563 _("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
3564 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3565 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3566
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3567 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
3568 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
3569 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
3570 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
3571 _("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
3572 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3573 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3574
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3575 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
3576 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
3577 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
3578 jabber_cmd_chat_role,
27933
9e7789d3a809 Fix two strings as pointed out on translators@
Paul Aurich <darkrain42@pidgin.im>
parents: 27931
diff changeset
3579 _("role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the users with a role or set users' role with the room."),
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
3580 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3581 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3582
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3583 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
3584 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
3585 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3586 jabber_cmd_chat_invite,
11158
2660ab8f8a14 [gaim-migrate @ 13245]
Etan Reisner <deryni@pidgin.im>
parents: 11033
diff changeset
3587 _("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
3588 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3589 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3590
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3591 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
3592 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
3593 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3594 jabber_cmd_chat_join,
22759
1ab25e736b3d Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents: 22587
diff changeset
3595 _("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
3596 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3597 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3598
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3599 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
3600 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
3601 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3602 jabber_cmd_chat_kick,
22759
1ab25e736b3d Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents: 22587
diff changeset
3603 _("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
3604 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3605 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3606
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3607 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
3608 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3609 "prpl-jabber", jabber_cmd_chat_msg,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
3610 _("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
3611 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3612 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3613
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3614 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
3615 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
3616 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
3617 "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
3618 _("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
3619 NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3620 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3621
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3622 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
3623 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
3624 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
17822
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
3625 "prpl-jabber", jabber_cmd_buzz,
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
3626 _("buzz: Buzz a user to get their attention"), NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3627 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
29827
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3628
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3629 id = purple_cmd_register("mood", "ws", PURPLE_CMD_P_PRPL,
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3630 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM |
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3631 PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3632 "prpl-jabber", jabber_cmd_mood,
324821bfa1af jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents: 29787
diff changeset
3633 _("mood: Set current user mood"), NULL);
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3634 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3635
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3636 g_hash_table_insert(jabber_cmds, plugin, commands);
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3637 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3638
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3639 static void cmds_free_func(gpointer value)
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3640 {
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3641 GSList *commands = value;
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3642 while (commands) {
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3643 purple_cmd_unregister(GPOINTER_TO_UINT(commands->data));
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3644 commands = g_slist_delete_link(commands, commands);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3645 }
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3646 }
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3647
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3648 static void jabber_unregister_commands(PurplePlugin *plugin)
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3649 {
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3650 g_hash_table_remove(jabber_cmds, plugin);
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3651 }
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3652
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3653 /* IPC functions */
23598
54fe227bf99e * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23597
diff changeset
3654
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3655 /**
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3656 * 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
3657 *
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3658 * @param account The PurpleAccount
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3659 * @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
3660 * @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
3661 *
23598
54fe227bf99e * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23597
diff changeset
3662 * @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
3663 */
23597
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3664 static gboolean
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3665 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
3666 const gchar *feature)
23597
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3667 {
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3668 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
3669 JabberStream *js;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3670 JabberBuddy *jb;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3671 JabberBuddyResource *jbr;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3672 gchar *resource;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3673
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3674 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
3675 return FALSE;
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3676 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
3677
27155
53502d71efdd Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents: 27143
diff changeset
3678 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
3679 !(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
3680 !(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
3681 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
3682 return FALSE;
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3683 }
24721
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3684
24734
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3685 g_free(resource);
780b8ad67c22 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents: 24721
diff changeset
3686
24802
eb481e98ac6a Sprinkle jabber_resource_has_capability in places
Paul Aurich <darkrain42@pidgin.im>
parents: 24737
diff changeset
3687 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
3688 }
164fbee281c1 * fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23586
diff changeset
3689
23599
ac402ffdcbec * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23598
diff changeset
3690 static void
24721
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3691 jabber_ipc_add_feature(const gchar *feature)
23599
ac402ffdcbec * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23598
diff changeset
3692 {
24721
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3693 if (!feature)
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3694 return;
23600
ca657199f39a * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23599
diff changeset
3695 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
3696
227944e5d0d6 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents: 24716
diff changeset
3697 /* 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
3698 jabber_caps_broadcast_change();
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3699 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
3700
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3701 static void
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3702 jabber_do_init(void)
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
3703 {
27286
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3704 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
3705 const gchar *ui_type;
27756
cc054031e076 Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents: 27755
diff changeset
3706 const gchar *type = "pc"; /* default client type, if unknown or
27286
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3707 unspecified */
27756
cc054031e076 Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents: 27755
diff changeset
3708 const gchar *ui_name = NULL;
29847
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3709 #ifdef HAVE_CYRUS_SASL
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3710 /* We really really only want to do this once per process */
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3711 static gboolean sasl_initialized = FALSE;
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3712 #ifdef _WIN32
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3713 UINT old_error_mode;
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3714 gchar *sasldir;
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3715 #endif
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3716 int ret;
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3717 #endif
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3718
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3719 /* XXX - If any other plugin wants SASL this won't be good ... */
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3720 #ifdef HAVE_CYRUS_SASL
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3721 if (!sasl_initialized) {
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3722 sasl_initialized = TRUE;
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3723 #ifdef _WIN32
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3724 sasldir = g_build_filename(wpurple_install_dir(), "sasl2", NULL);
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3725 sasl_set_path(SASL_PATH_TYPE_PLUGIN, sasldir);
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3726 g_free(sasldir);
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3727 /* Suppress error popups for failing to load sasl plugins */
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3728 old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3729 #endif
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3730 if ((ret = sasl_client_init(NULL)) != SASL_OK) {
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3731 purple_debug_error("xmpp", "Error (%d) initializing SASL.\n", ret);
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3732 }
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3733 #ifdef _WIN32
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3734 /* Restore the original error mode */
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3735 SetErrorMode(old_error_mode);
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3736 #endif
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3737 }
c4713809ccce jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents: 29845
diff changeset
3738 #endif
27286
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3739
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3740 jabber_cmds = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, cmds_free_func);
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3741
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
3742 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
3743 if (ui_type) {
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3744 if (strcmp(ui_type, "pc") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3745 strcmp(ui_type, "console") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3746 strcmp(ui_type, "phone") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3747 strcmp(ui_type, "handheld") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3748 strcmp(ui_type, "web") == 0 ||
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3749 strcmp(ui_type, "bot") == 0) {
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3750 type = ui_type;
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3751 }
f637c4c27815 Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents: 27285
diff changeset
3752 }
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3753
27756
cc054031e076 Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents: 27755
diff changeset
3754 if (ui_info)
cc054031e076 Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents: 27755
diff changeset
3755 ui_name = g_hash_table_lookup(ui_info, "name");
cc054031e076 Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents: 27755
diff changeset
3756 if (ui_name == NULL)
cc054031e076 Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents: 27755
diff changeset
3757 ui_name = PACKAGE;
cc054031e076 Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents: 27755
diff changeset
3758
cc054031e076 Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents: 27755
diff changeset
3759 jabber_add_identity("client", type, NULL, ui_name);
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3760
23597
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3761 /* initialize jabber_features list */
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
3762 jabber_add_feature(NS_LAST_ACTIVITY, 0);
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
3763 jabber_add_feature(NS_OOB_IQ_DATA, 0);
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
3764 jabber_add_feature(NS_ENTITY_TIME, 0);
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3765 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
3766 jabber_add_feature("jabber:x:conference", 0);
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
3767 jabber_add_feature(NS_BYTESTREAMS, 0);
25798
7fabdc4d3a2b Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <darkrain42@pidgin.im>
parents: 25797
diff changeset
3768 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
3769 jabber_add_feature("http://jabber.org/protocol/chatstates", 0);
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
3770 jabber_add_feature(NS_DISCO_INFO, 0);
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
3771 jabber_add_feature(NS_DISCO_ITEMS, 0);
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3772 jabber_add_feature(NS_IBB, 0);
23586
e495a4623f76 Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23428
diff changeset
3773 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
3774 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
3775 jabber_add_feature("http://jabber.org/protocol/si", 0);
30474
3f649d2041db jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <malu@pidgin.im>
parents: 30458
diff changeset
3776 jabber_add_feature(NS_SI_FILE_TRANSFER, 0);
28984
1d84517d56eb jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents: 28982
diff changeset
3777 jabber_add_feature(NS_XHTML_IM, 0);
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3778 jabber_add_feature(NS_PING, 0);
26659
918350344dc7 Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents: 26658
diff changeset
3779
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3780 /* Buzz/Attention */
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3781 jabber_add_feature(NS_ATTENTION, jabber_buzz_isenabled);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3782
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3783 /* Bits Of Binary */
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3784 jabber_add_feature(NS_BOB, 0);
27028
1a2ef7ddb463 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 27027
diff changeset
3785
26659
918350344dc7 Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents: 26658
diff changeset
3786 /* Jingle features! */
918350344dc7 Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents: 26658
diff changeset
3787 jabber_add_feature(JINGLE, 0);
26666
4c95bdba5627 Advertise ICEUDP only when libnice is available
Paul Aurich <darkrain42@pidgin.im>
parents: 26665
diff changeset
3788
26665
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3789 #ifdef USE_VV
28980
4a0f7340b539 jabber: Add the missing file and fix up the Google session namespaces
Paul Aurich <darkrain42@pidgin.im>
parents: 28979
diff changeset
3790 jabber_add_feature(NS_GOOGLE_PROTOCOL_SESSION, jabber_audio_enabled);
28979
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3791 jabber_add_feature(NS_GOOGLE_VOICE, jabber_audio_enabled);
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3792 jabber_add_feature(NS_GOOGLE_VIDEO, jabber_video_enabled);
191942cc7747 jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents: 28928
diff changeset
3793 jabber_add_feature(NS_GOOGLE_CAMERA, jabber_video_enabled);
28561
a2dd00ce03eb Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <resiak@pidgin.im>
parents: 28379
diff changeset
3794 jabber_add_feature(JINGLE_APP_RTP, 0);
26668
ef06285f3b64 Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents: 26666
diff changeset
3795 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
3796 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled);
28561
a2dd00ce03eb Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <resiak@pidgin.im>
parents: 28379
diff changeset
3797 jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0);
26960
6ab1af0e17f7 merge of '8482365bb2ecec16d6e7161069a6000c330727e8'
Paul Aurich <darkrain42@pidgin.im>
parents: 26959 26675
diff changeset
3798 jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0);
29541
37f0297ff3ad Rebroadcast XMPP caps whenever the UI caps change.
Michael Ruprecht <maiku@pidgin.im>
parents: 28656
diff changeset
3799
37f0297ff3ad Rebroadcast XMPP caps whenever the UI caps change.
Michael Ruprecht <maiku@pidgin.im>
parents: 28656
diff changeset
3800 g_signal_connect(G_OBJECT(purple_media_manager_get()), "ui-caps-changed",
37f0297ff3ad Rebroadcast XMPP caps whenever the UI caps change.
Michael Ruprecht <maiku@pidgin.im>
parents: 28656
diff changeset
3801 G_CALLBACK(jabber_caps_broadcast_change), NULL);
26665
16f54aa7c7d1 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents: 26663
diff changeset
3802 #endif
26659
918350344dc7 Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents: 26658
diff changeset
3803
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3804 /* reverse order of unload_plugin */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3805 jabber_iq_init();
29848
999c0235bbc6 jabber: Heavily refactor jabber_presence_parse(). It's still not short enough.
Paul Aurich <darkrain42@pidgin.im>
parents: 29847
diff changeset
3806 jabber_presence_init();
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3807 jabber_caps_init();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3808 /* PEP things should be init via jabber_pep_init, not here */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3809 jabber_pep_init();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3810 jabber_data_init();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3811 jabber_bosh_init();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3812
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3813 /* TODO: Implement adding and retrieving own features via IPC API */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3814
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3815 jabber_ibb_init();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3816 jabber_si_init();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3817
28855
c5bc85f9c00e jabber: Factor the SASL auth methods into their own files.
Paul Aurich <darkrain42@pidgin.im>
parents: 28832
diff changeset
3818 jabber_auth_init();
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3819 }
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3820
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3821 static void
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3822 jabber_do_uninit(void)
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3823 {
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3824 /* reverse order of jabber_do_init */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3825 jabber_bosh_uninit();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3826 jabber_data_uninit();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3827 jabber_si_uninit();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3828 jabber_ibb_uninit();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3829 /* PEP things should be uninit via jabber_pep_uninit, not here */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3830 jabber_pep_uninit();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3831 jabber_caps_uninit();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3832 jabber_presence_uninit();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3833 jabber_iq_uninit();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3834
30036
747b4a361046 jabber: --more leaks
Paul Aurich <darkrain42@pidgin.im>
parents: 30035
diff changeset
3835 #ifdef USE_VV
747b4a361046 jabber: --more leaks
Paul Aurich <darkrain42@pidgin.im>
parents: 30035
diff changeset
3836 g_signal_handlers_disconnect_by_func(G_OBJECT(purple_media_manager_get()),
747b4a361046 jabber: --more leaks
Paul Aurich <darkrain42@pidgin.im>
parents: 30035
diff changeset
3837 G_CALLBACK(jabber_caps_broadcast_change), NULL);
747b4a361046 jabber: --more leaks
Paul Aurich <darkrain42@pidgin.im>
parents: 30035
diff changeset
3838 #endif
747b4a361046 jabber: --more leaks
Paul Aurich <darkrain42@pidgin.im>
parents: 30035
diff changeset
3839
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3840 jabber_auth_uninit();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3841 jabber_features_destroy();
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3842 jabber_identities_destroy();
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3843
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3844 g_hash_table_destroy(jabber_cmds);
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3845 jabber_cmds = NULL;
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3846 }
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3847
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3848 void jabber_plugin_init(PurplePlugin *plugin)
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3849 {
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3850 ++plugin_ref;
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3851
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3852 if (plugin_ref == 1)
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3853 jabber_do_init();
28855
c5bc85f9c00e jabber: Factor the SASL auth methods into their own files.
Paul Aurich <darkrain42@pidgin.im>
parents: 28832
diff changeset
3854
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3855 jabber_register_commands(plugin);
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3856
23597
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3857 /* IPC functions */
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3858 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
3859 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
3860 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
3861 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
3862 purple_value_new(PURPLE_TYPE_STRING),
ec0bcdfa1da1 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23596
diff changeset
3863 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
3864
23600
ca657199f39a * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23599
diff changeset
3865 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
3866 purple_marshal_VOID__POINTER,
ca657199f39a * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23599
diff changeset
3867 NULL, 1,
ca657199f39a * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23599
diff changeset
3868 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
3869
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3870 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
3871 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
3872 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
3873 NULL, 2,
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3874 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
3875 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
3876
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3877 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
3878 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
3879 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
3880 NULL, 2,
d41e83f82148 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents: 27221
diff changeset
3881 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
3882 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3883
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3884 purple_signal_register(plugin, "jabber-register-namespace-watcher",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3885 purple_marshal_VOID__POINTER_POINTER,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3886 NULL, 2,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3887 purple_value_new(PURPLE_TYPE_STRING), /* node */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3888 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3889
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3890 purple_signal_register(plugin, "jabber-unregister-namespace-watcher",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3891 purple_marshal_VOID__POINTER_POINTER,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3892 NULL, 2,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3893 purple_value_new(PURPLE_TYPE_STRING), /* node */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3894 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3895
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3896 purple_signal_connect(plugin, "jabber-register-namespace-watcher",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3897 plugin, PURPLE_CALLBACK(jabber_iq_signal_register), NULL);
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3898 purple_signal_connect(plugin, "jabber-unregister-namespace-watcher",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3899 plugin, PURPLE_CALLBACK(jabber_iq_signal_unregister), NULL);
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3900
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3901
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3902 purple_signal_register(plugin, "jabber-receiving-xmlnode",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3903 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3904 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3905 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3906
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3907 purple_signal_register(plugin, "jabber-sending-xmlnode",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3908 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3909 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3910 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3911
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3912 /*
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3913 * Do not remove this or the plugin will fail. Completely. You have been
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3914 * warned!
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3915 */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3916 purple_signal_connect_priority(plugin, "jabber-sending-xmlnode",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3917 plugin, PURPLE_CALLBACK(jabber_send_signal_cb),
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3918 NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST);
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3919
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3920 purple_signal_register(plugin, "jabber-sending-text",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3921 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3922 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3923 purple_value_new_outgoing(PURPLE_TYPE_STRING));
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3924
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3925 purple_signal_register(plugin, "jabber-receiving-message",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3926 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3927 purple_value_new(PURPLE_TYPE_BOOLEAN), 6,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3928 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3929 purple_value_new(PURPLE_TYPE_STRING), /* type */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3930 purple_value_new(PURPLE_TYPE_STRING), /* id */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3931 purple_value_new(PURPLE_TYPE_STRING), /* from */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3932 purple_value_new(PURPLE_TYPE_STRING), /* to */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3933 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3934
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3935 purple_signal_register(plugin, "jabber-receiving-iq",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3936 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3937 purple_value_new(PURPLE_TYPE_BOOLEAN), 5,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3938 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3939 purple_value_new(PURPLE_TYPE_STRING), /* type */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3940 purple_value_new(PURPLE_TYPE_STRING), /* id */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3941 purple_value_new(PURPLE_TYPE_STRING), /* from */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3942 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3943
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3944 purple_signal_register(plugin, "jabber-watched-iq",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3945 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3946 purple_value_new(PURPLE_TYPE_BOOLEAN), 5,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3947 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3948 purple_value_new(PURPLE_TYPE_STRING), /* type */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3949 purple_value_new(PURPLE_TYPE_STRING), /* id */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3950 purple_value_new(PURPLE_TYPE_STRING), /* from */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3951 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); /* child */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3952
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3953 purple_signal_register(plugin, "jabber-receiving-presence",
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3954 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3955 purple_value_new(PURPLE_TYPE_BOOLEAN), 4,
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3956 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3957 purple_value_new(PURPLE_TYPE_STRING), /* type */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3958 purple_value_new(PURPLE_TYPE_STRING), /* from */
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3959 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
3960 }
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3961
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3962 void jabber_plugin_uninit(PurplePlugin *plugin)
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3963 {
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3964 g_return_if_fail(plugin_ref > 0);
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3965
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3966 purple_signals_unregister_by_instance(plugin);
28832
4e4b609b85e4 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <darkrain42@pidgin.im>
parents: 28830
diff changeset
3967 purple_plugin_ipc_unregister_all(plugin);
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
3968
29845
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3969 jabber_unregister_commands(plugin);
5684cbe452f7 jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents: 29844
diff changeset
3970
29844
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3971 --plugin_ref;
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3972 if (plugin_ref == 0)
6c6e346e1390 jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents: 29843
diff changeset
3973 jabber_do_uninit();
24737
b8a96a07e7ac Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents: 24735
diff changeset
3974 }

mercurial