annotate libpurple/protocols/jabber/jabber.c @ 32816:ec6371d4cae8

Add purple_account_is_disconnecting() accessor function.
author andrew.victor@mxit.com
date Sun, 06 Nov 2011 20:31:14 +0000
parents cb486df263ef
children 4a34689eeb33
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /*
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2 * purple - Jabber Protocol Plugin
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 *
28398
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28331
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28331
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28331
diff changeset
6 * source distribution.
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 * (at your option) any later version.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 * GNU General Public License for more details.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19200
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 #include "internal.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 #include "account.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 #include "accountopt.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27 #include "blist.h"
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
28 #include "core.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 #include "cmds.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 #include "connection.h"
15891
87ea711b9781 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents: 15823
diff changeset
31 #include "conversation.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 #include "debug.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 #include "dnssrv.h"
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 24858
diff changeset
34 #include "imgstore.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 #include "message.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 #include "notify.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 #include "pluginpref.h"
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
38 #include "privacy.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 #include "proxy.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40 #include "prpl.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41 #include "request.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42 #include "server.h"
25963
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
43 #include "status.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44 #include "util.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 #include "version.h"
15891
87ea711b9781 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents: 15823
diff changeset
46 #include "xmlnode.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 #include "auth.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 #include "buddy.h"
25987
c4fd9222dda1 propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
parents: 25443 25835
diff changeset
50 #include "caps.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 #include "chat.h"
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23182
diff changeset
52 #include "data.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 #include "disco.h"
30905
ae615b3d3e47 First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <ml@update.uu.se>
parents: 30031
diff changeset
54 #include "google/google.h"
ae615b3d3e47 First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <ml@update.uu.se>
parents: 30031
diff changeset
55 #include "google/google_roster.h"
ae615b3d3e47 First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <ml@update.uu.se>
parents: 30031
diff changeset
56 #include "google/google_session.h"
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
57 #include "ibb.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 #include "iq.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 #include "jutil.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 #include "message.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 #include "parser.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 #include "presence.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63 #include "jabber.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64 #include "roster.h"
17562
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
65 #include "ping.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 #include "si.h"
29862
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
67 #include "usermood.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 #include "xdata.h"
17561
a75079eae085 added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents: 17560
diff changeset
69 #include "pep.h"
17610
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
70 #include "adhoccommands.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71
26014
bd598b606ca4 Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25729
diff changeset
72 #include "jingle/jingle.h"
bd598b606ca4 Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25729
diff changeset
73 #include "jingle/rtp.h"
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23182
diff changeset
74
29889
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29867
diff changeset
75 #define PING_TIMEOUT 60
30184
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
76 /* Send a whitespace keepalive to the server if we haven't sent
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
77 * anything in the last 120 seconds
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
78 */
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
79 #define DEFAULT_INACTIVITY_TIME 120
29889
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29867
diff changeset
80
21538
4e5bef6c3379 Fix #3669
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21418
diff changeset
81 GList *jabber_features = NULL;
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
82 GList *jabber_identities = NULL;
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
83
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
84 static GHashTable *jabber_cmds = NULL; /* PurplePlugin * => GSList of ids */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
86 static gint plugin_ref = 0;
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
87
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
88 static void jabber_unregister_account_cb(JabberStream *js);
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
89 static void try_srv_connect(JabberStream *js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 static void jabber_stream_init(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 char *open_stream;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94
30003
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 30002
diff changeset
95 if (js->stream_id) {
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 30002
diff changeset
96 g_free(js->stream_id);
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 30002
diff changeset
97 js->stream_id = NULL;
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 30002
diff changeset
98 }
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 30002
diff changeset
99
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
100 open_stream = g_strdup_printf("<stream:stream to='%s' "
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
101 "xmlns='" NS_XMPP_CLIENT "' "
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
102 "xmlns:stream='" NS_XMPP_STREAMS "' "
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 "version='1.0'>",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 js->user->domain);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 /* setup the parser fresh for each stream */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106 jabber_parser_setup(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107 jabber_send_raw(js, open_stream, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 js->reinit = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 g_free(open_stream);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112 static void
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
113 jabber_session_initialized_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
114 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
115 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 {
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
117 if (type == JABBER_IQ_RESULT) {
25826
af2b883df9a3 Wait until receiving the roster to tell the core we're logged in
Paul Aurich <paul@darkrain42.org>
parents: 25825
diff changeset
118 jabber_disco_items_server(js);
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
119 if(js->unregistration)
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
120 jabber_unregister_account_cb(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121 } else {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
122 purple_connection_error(js->gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
123 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
124 ("Error initializing session"));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
125 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
126 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128 static void jabber_session_init(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131 xmlnode *session;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
132
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133 jabber_iq_set_callback(iq, jabber_session_initialized_cb, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135 session = xmlnode_new_child(iq->node, "session");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
136 xmlnode_set_namespace(session, NS_XMPP_SESSION);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
137
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
138 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
139 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
140
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
141 static void jabber_bind_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
142 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
143 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
145 xmlnode *bind;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
146
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
147 if (type == JABBER_IQ_RESULT &&
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
148 (bind = xmlnode_get_child_with_namespace(packet, "bind", NS_XMPP_BIND))) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
149 xmlnode *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
150 char *full_jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151 if((jid = xmlnode_get_child(bind, "jid")) && (full_jid = xmlnode_get_data(jid))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 jabber_id_free(js->user);
28131
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
153
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
154 js->user = jabber_id_new(full_jid);
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
155 if (js->user == NULL) {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
156 purple_connection_error(js->gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
157 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
158 _("Invalid response from server"));
28131
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
159 g_free(full_jid);
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
160 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 }
28131
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
162
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28131
diff changeset
163 js->user_jb = jabber_buddy_find(js, full_jid, TRUE);
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28131
diff changeset
164 js->user_jb->subscription |= JABBER_SUB_BOTH;
24155
a61c017d3a99 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23988
diff changeset
165
a61c017d3a99 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23988
diff changeset
166 purple_connection_set_display_name(js->gc, full_jid);
a61c017d3a99 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23988
diff changeset
167
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168 g_free(full_jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
169 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
170 } else {
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
171 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
172 char *msg = jabber_parse_error(js, packet, &reason);
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
173 purple_connection_error(js->gc, reason, msg);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
174 g_free(msg);
30146
b00abe5ec15e jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <paul@darkrain42.org>
parents: 30107
diff changeset
175
b00abe5ec15e jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <paul@darkrain42.org>
parents: 30107
diff changeset
176 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
178
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
179 jabber_session_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
180 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
181
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
182 static char *jabber_prep_resource(char *input) {
25097
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
183 char hostname[256], /* current hostname */
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
184 *dot = NULL;
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
185
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
186 /* Empty resource == don't send any */
24834
41e69c65b006 Slightly modified version of a fix fqueze proposed for a crash with the empty
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24820
diff changeset
187 if (input == NULL || *input == '\0')
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
188 return NULL;
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
189
24514
6b9552b09de0 Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24508
diff changeset
190 if (strstr(input, "__HOSTNAME__") == NULL)
24531
fb5a11ec8be6 darkrain again
Ka-Hing Cheung <khc@hxbc.us>
parents: 24514
diff changeset
191 return g_strdup(input);
24514
6b9552b09de0 Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24508
diff changeset
192
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
193 /* Replace __HOSTNAME__ with hostname */
24505
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
194 if (gethostname(hostname, sizeof(hostname) - 1)) {
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
195 purple_debug_warning("jabber", "gethostname: %s\n", g_strerror(errno));
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
196 /* according to glibc doc, the only time an error is returned
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
197 is if the hostname is longer than the buffer, in which case
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
198 glibc 2.2+ would still fill the buffer with partial
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
199 hostname, so maybe we want to detect that and use it
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
200 instead
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
201 */
32237
514092c20438 Change another hostname lookup fallback to use g_strlcpy.
Ethan Blanton <elb@pidgin.im>
parents: 32160
diff changeset
202 g_strlcpy(hostname, "localhost", sizeof(hostname));
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
203 }
24505
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
204 hostname[sizeof(hostname) - 1] = '\0';
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
205
25097
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
206 /* We want only the short hostname, not the FQDN - this will prevent the
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
207 * resource string from being unreasonably long on systems which stuff the
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
208 * whole FQDN in the hostname */
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
209 if((dot = strchr(hostname, '.')))
30842
7c9a4235342c < QuLogic> on line 208 of jabber.c, should that be *dot?
Paul Aurich <paul@darkrain42.org>
parents: 30753
diff changeset
210 *dot = '\0';
25097
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
211
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
212 return purple_strreplace(input, "__HOSTNAME__", hostname);
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
213 }
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
214
30276
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
215 static gboolean
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
216 jabber_process_starttls(JabberStream *js, xmlnode *packet)
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
217 {
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
218 PurpleAccount *account;
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
219 xmlnode *starttls;
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
220
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
221 account = purple_connection_get_account(js->gc);
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
222
31014
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
223 #if 0
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
224 /*
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
225 * This code DOES NOT EXIST, will never be enabled by default, and
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
226 * will never ever be supported (by me).
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
227 * It's literally *only* for developer testing.
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
228 */
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
229 {
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
230 const gchar *connection_security = purple_account_get_string(account, "connection_security", JABBER_DEFAULT_REQUIRE_TLS);
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
231 if (!g_str_equal(connection_security, "none") &&
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
232 purple_ssl_is_supported()) {
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
233 jabber_send_raw(js,
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
234 "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1);
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
235 return TRUE;
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
236 }
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
237 }
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
238 #else
30629
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
239 if(purple_ssl_is_supported()) {
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
240 jabber_send_raw(js,
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
241 "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1);
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
242 return TRUE;
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
243 } else {
31015
27e5213d5da1 Let's make it clear that means locally
Paul Aurich <paul@darkrain42.org>
parents: 31014
diff changeset
244 purple_debug_warning("jabber", "No libpurple TLS/SSL support found.");
30629
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
245 }
31014
2235682635d1 jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents: 31009
diff changeset
246 #endif
30629
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
247
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
248 starttls = xmlnode_get_child(packet, "starttls");
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
249 if(xmlnode_get_child(starttls, "required")) {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
250 purple_connection_error(js->gc,
30276
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
251 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
252 _("Server requires TLS/SSL, but no TLS/SSL support was found."));
30629
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
253 return TRUE;
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
254 }
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
255
30895
8084631e2e84 jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents: 30881
diff changeset
256 if (g_str_equal("require_tls", purple_account_get_string(account, "connection_security", JABBER_DEFAULT_REQUIRE_TLS))) {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
257 purple_connection_error(js->gc,
30629
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
258 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
30276
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
259 _("You require encryption, but no TLS/SSL support was found."));
30629
07f716427b50 We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents: 30621
diff changeset
260 return TRUE;
30276
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
261 }
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
262
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
263 return FALSE;
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
264 }
417a4e912738 jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents: 30275
diff changeset
265
25607
f775f6021654 * using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25602
diff changeset
266 void jabber_stream_features_parse(JabberStream *js, xmlnode *packet)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267 {
30895
8084631e2e84 jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents: 30881
diff changeset
268 PurpleAccount *account = purple_connection_get_account(js->gc);
8084631e2e84 jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents: 30881
diff changeset
269 const char *connection_security =
8084631e2e84 jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents: 30881
diff changeset
270 purple_account_get_string(account, "connection_security", JABBER_DEFAULT_REQUIRE_TLS);
8084631e2e84 jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents: 30881
diff changeset
271
8084631e2e84 jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents: 30881
diff changeset
272 if (xmlnode_get_child(packet, "starttls")) {
8084631e2e84 jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents: 30881
diff changeset
273 if (jabber_process_starttls(js, packet)) {
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
274 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
275 return;
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
276 }
30895
8084631e2e84 jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents: 30881
diff changeset
277 } else if (g_str_equal(connection_security, "require_tls") && !jabber_stream_is_ssl(js)) {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
278 purple_connection_error(js->gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
279 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
280 _("You require encryption, but it is not available on this server."));
17623
a8420fd18545 Added an option to require SSL or TLS when connecting to an XMPP server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17621
diff changeset
281 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
284 if(js->registration) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
285 jabber_register_start(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286 } else if(xmlnode_get_child(packet, "mechanisms")) {
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
287 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288 jabber_auth_start(js, packet);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 } else if(xmlnode_get_child(packet, "bind")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290 xmlnode *bind, *resource;
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
291 char *requested_resource;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
293 bind = xmlnode_new_child(iq->node, "bind");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
294 xmlnode_set_namespace(bind, NS_XMPP_BIND);
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
295 requested_resource = jabber_prep_resource(js->user->resource);
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
296
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
297 if (requested_resource != NULL) {
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
298 resource = xmlnode_new_child(bind, "resource");
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
299 xmlnode_insert_data(resource, requested_resource, -1);
24614
641fe4c2b2a5 Use g_free instead of free.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24531
diff changeset
300 g_free(requested_resource);
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
301 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
302
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 jabber_iq_set_callback(iq, jabber_bind_result_cb, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
304
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 jabber_iq_send(iq);
29142
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 29140
diff changeset
306 } else if (xmlnode_get_child_with_namespace(packet, "ver", NS_ROSTER_VERSIONING)) {
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 29140
diff changeset
307 js->server_caps |= JABBER_CAP_ROSTER_VERSIONING;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
308 } else /* if(xmlnode_get_child_with_namespace(packet, "auth")) */ {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
309 /* If we get an empty stream:features packet, or we explicitly get
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
310 * an auth feature with namespace http://jabber.org/features/iq-auth
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
311 * we should revert back to iq:auth authentication, even though we're
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
312 * connecting to an XMPP server. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
313 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
29078
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28893
diff changeset
314 jabber_auth_start_old(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
315 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
316 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
317
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
318 static void jabber_stream_handle_error(JabberStream *js, xmlnode *packet)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
319 {
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
320 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
321 char *msg = jabber_parse_error(js, packet, &reason);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
322
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
323 purple_connection_error(js->gc, reason, msg);
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
324
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
325 g_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
326 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
327
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
328 static void tls_init(JabberStream *js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
329
17621
bbd92ee894f2 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 <pidgin@monitzer.com>
parents: 17620
diff changeset
330 void jabber_process_packet(JabberStream *js, xmlnode **packet)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
331 {
30002
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
332 const char *name;
15919
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15918
diff changeset
333 const char *xmlns;
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15918
diff changeset
334
28893
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28891
diff changeset
335 purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-receiving-xmlnode", js->gc, packet);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
336
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
337 /* if the signal leaves us with a null packet, we're done */
17621
bbd92ee894f2 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 <pidgin@monitzer.com>
parents: 17620
diff changeset
338 if(NULL == *packet)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
340
30002
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
341 name = (*packet)->name;
17621
bbd92ee894f2 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 <pidgin@monitzer.com>
parents: 17620
diff changeset
342 xmlns = xmlnode_get_namespace(*packet);
15919
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15918
diff changeset
343
17621
bbd92ee894f2 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 <pidgin@monitzer.com>
parents: 17620
diff changeset
344 if(!strcmp((*packet)->name, "iq")) {
bbd92ee894f2 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 <pidgin@monitzer.com>
parents: 17620
diff changeset
345 jabber_iq_parse(js, *packet);
bbd92ee894f2 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 <pidgin@monitzer.com>
parents: 17620
diff changeset
346 } else if(!strcmp((*packet)->name, "presence")) {
bbd92ee894f2 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 <pidgin@monitzer.com>
parents: 17620
diff changeset
347 jabber_presence_parse(js, *packet);
bbd92ee894f2 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 <pidgin@monitzer.com>
parents: 17620
diff changeset
348 } else if(!strcmp((*packet)->name, "message")) {
bbd92ee894f2 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 <pidgin@monitzer.com>
parents: 17620
diff changeset
349 jabber_message_parse(js, *packet);
30002
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
350 } else if (purple_strequal(xmlns, NS_XMPP_STREAMS)) {
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
351 if (g_str_equal(name, "features"))
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
352 jabber_stream_features_parse(js, *packet);
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
353 else if (g_str_equal(name, "error"))
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
354 jabber_stream_handle_error(js, *packet);
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
355 } else if (purple_strequal(xmlns, NS_XMPP_SASL)) {
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
356 if (js->state != JABBER_STREAM_AUTHENTICATING)
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
357 purple_debug_warning("jabber", "Ignoring spurious SASL stanza %s\n", name);
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
358 else {
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
359 if (g_str_equal(name, "challenge"))
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
360 jabber_auth_handle_challenge(js, *packet);
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
361 else if (g_str_equal(name, "success"))
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
362 jabber_auth_handle_success(js, *packet);
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
363 else if (g_str_equal(name, "failure"))
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
364 jabber_auth_handle_failure(js, *packet);
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
365 }
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
366 } else if (purple_strequal(xmlns, NS_XMPP_TLS)) {
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
367 if (js->state != JABBER_STREAM_INITIALIZING_ENCRYPTION || js->gsc)
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
368 purple_debug_warning("jabber", "Ignoring spurious %s\n", name);
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
369 else {
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
370 if (g_str_equal(name, "proceed"))
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
371 tls_init(js);
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
372 /* TODO: Handle <failure/>, I guess? */
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29973
diff changeset
373 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
374 } else {
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28888
diff changeset
375 purple_debug_warning("jabber", "Unknown packet: %s\n", (*packet)->name);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
376 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
377 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
378
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
379 static int jabber_do_send(JabberStream *js, const char *data, int len)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
381 int ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
382
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
383 if (js->gsc)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
384 ret = purple_ssl_write(js->gsc, data, len);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
385 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
386 ret = write(js->fd, data, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
387
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
388 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
389 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
390
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
391 static void jabber_send_cb(gpointer data, gint source, PurpleInputCondition cond)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
392 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
393 JabberStream *js = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
394 int ret, writelen;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
395 writelen = purple_circ_buffer_get_max_read(js->write_buffer);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
396
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
397 if (writelen == 0) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
398 purple_input_remove(js->writeh);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
399 js->writeh = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
400 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
401 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
402
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
403 ret = jabber_do_send(js, js->write_buffer->outptr, writelen);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
404
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405 if (ret < 0 && errno == EAGAIN)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
407 else if (ret <= 0) {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
408 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
409 g_strerror(errno));
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
410 purple_connection_error(js->gc,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
411 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
412 g_free(tmp);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
413 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
414 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
415
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
416 purple_circ_buffer_mark_read(js->write_buffer, ret);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
417 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
418
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
419 static gboolean do_jabber_send_raw(JabberStream *js, const char *data, int len)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
420 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
421 int ret;
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
422 gboolean success = TRUE;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
424 g_return_val_if_fail(len > 0, FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
425
30184
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
426 if (js->state == JABBER_STREAM_CONNECTED)
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
427 jabber_stream_restart_inactivity_timer(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
429 if (js->writeh == 0)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430 ret = jabber_do_send(js, data, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
431 else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432 ret = -1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 errno = EAGAIN;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
435
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
436 if (ret < 0 && errno != EAGAIN) {
29331
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
437 PurpleAccount *account = purple_connection_get_account(js->gc);
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
438 /*
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
439 * The server may have closed the socket (on a stream error), so if
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
440 * we're disconnecting, don't generate (possibly another) error that
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
441 * (for some UIs) would mask the first.
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
442 */
32816
ec6371d4cae8 Add purple_account_is_disconnecting() accessor function.
andrew.victor@mxit.com
parents: 32815
diff changeset
443 if (!purple_account_is_disconnecting(account)) {
29331
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
444 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
445 g_strerror(errno));
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
446 purple_connection_error(js->gc,
29331
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
447 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
448 g_free(tmp);
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
449 }
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 29288
diff changeset
450
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
451 success = FALSE;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
452 } else if (ret < len) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453 if (ret < 0)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 ret = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 if (js->writeh == 0)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
456 js->writeh = purple_input_add(
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
457 js->gsc ? js->gsc->fd : js->fd,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
458 PURPLE_INPUT_WRITE, jabber_send_cb, js);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
459 purple_circ_buffer_append(js->write_buffer,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
460 data + ret, len - ret);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
461 }
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
462
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
463 return success;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
464 }
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
465
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
466 void jabber_send_raw(JabberStream *js, const char *data, int len)
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
467 {
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
468 PurpleConnection *gc;
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
469 PurpleAccount *account;
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
470
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
471 gc = js->gc;
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
472 account = purple_connection_get_account(gc);
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
473
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
474 /* because printing a tab to debug every minute gets old */
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
475 if(strcmp(data, "\t")) {
28888
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
476 const char *username;
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
477 char *text = NULL, *last_part = NULL, *tag_start = NULL;
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
478
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
479 /* Because debug logs with plaintext passwords make me sad */
31370
b07841f6cd15 jabber: Print out plaintext-equivalent passwords when PURPLE_UNSAFE_DEBUG is set.
Paul Aurich <paul@darkrain42.org>
parents: 31039
diff changeset
480 if (!purple_debug_is_unsafe() && js->state != JABBER_STREAM_CONNECTED &&
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
481 /* Either <auth> or <query><password>... */
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
482 (((tag_start = strstr(data, "<auth ")) &&
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
483 strstr(data, "xmlns='" NS_XMPP_SASL "'")) ||
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
484 ((tag_start = strstr(data, "<query ")) &&
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
485 strstr(data, "xmlns='jabber:iq:auth'>") &&
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
486 (tag_start = strstr(tag_start, "<password>"))))) {
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
487 char *data_start, *tag_end = strchr(tag_start, '>');
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
488 text = g_strdup(data);
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
489
25884
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
490 /* Better to print out some wacky debugging than crash
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
491 * due to a plugin sending bad xml */
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
492 if (tag_end == NULL)
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
493 tag_end = tag_start;
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
494
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
495 data_start = text + (tag_end - data) + 1;
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
496
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
497 last_part = strchr(data_start, '<');
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
498 *data_start = '\0';
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
499 }
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
500
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
501 username = purple_connection_get_display_name(gc);
28888
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
502 if (!username)
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
503 username = purple_account_get_username(account);
28888
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
504
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
505 purple_debug_misc("jabber", "Sending%s (%s): %s%s%s\n",
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
506 jabber_stream_is_ssl(js) ? " (ssl)" : "", username,
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
507 text ? text : data,
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
508 last_part ? "password removed" : "",
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
509 last_part ? last_part : "");
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
510
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
511 g_free(text);
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
512 }
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
513
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
514 purple_signal_emit(purple_connection_get_prpl(gc), "jabber-sending-text", gc, &data);
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
515 if (data == NULL)
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
516 return;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
517
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
518 if (len == -1)
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
519 len = strlen(data);
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
520
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
521 /* If we've got a security layer, we need to encode the data,
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
522 * splitting it on the maximum buffer length negotiated */
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
523 #ifdef HAVE_CYRUS_SASL
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
524 if (js->sasl_maxbuf>0) {
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
525 int pos = 0;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
526
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
527 if (!js->gsc && js->fd<0)
30273
2829dd1cc118 jabber: I don't see how this is possible, and it looks like an error to me.
Paul Aurich <paul@darkrain42.org>
parents: 30270
diff changeset
528 g_return_if_reached();
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
529
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
530 while (pos < len) {
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
531 int towrite;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
532 const char *out;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
533 unsigned olen;
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
534 int rc;
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
535
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
536 towrite = MIN((len - pos), js->sasl_maxbuf);
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
537
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
538 rc = sasl_encode(js->sasl, &data[pos], towrite,
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
539 &out, &olen);
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
540 if (rc != SASL_OK) {
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
541 gchar *error =
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
542 g_strdup_printf(_("SASL error: %s"),
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
543 sasl_errdetail(js->sasl));
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
544 purple_debug_error("jabber",
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
545 "sasl_encode error %d: %s\n", rc,
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
546 sasl_errdetail(js->sasl));
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
547 purple_connection_error(gc,
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
548 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
549 error);
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
550 g_free(error);
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
551 return;
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
552 }
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
553 pos += towrite;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
554
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
555 /* do_jabber_send_raw returns FALSE when it throws a
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
556 * connection error.
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
557 */
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
558 if (!do_jabber_send_raw(js, out, olen))
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
559 break;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
560 }
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
561 return;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
562 }
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
563 #endif
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
564
28125
53f0956f76dc jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents: 28115
diff changeset
565 if (js->bosh)
26530
d4af753e0e33 Pass all messages to BOSH as text, so they pass through the sending-text
Paul Aurich <paul@darkrain42.org>
parents: 26529
diff changeset
566 jabber_bosh_connection_send_raw(js->bosh, data);
25777
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
567 else
25717
907ca9a36fe0 explicit merge of '714a7c7f903d11c96ffade34966121da549d998f'
Paul Aurich <paul@darkrain42.org>
parents: 25608 25716
diff changeset
568 do_jabber_send_raw(js, data, len);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
569 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
570
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
571 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
572 {
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
573 JabberStream *js = purple_connection_get_protocol_data(gc);
30621
92a5d4b38f21 jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents: 30276
diff changeset
574
92a5d4b38f21 jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents: 30276
diff changeset
575 g_return_val_if_fail(js != NULL, -1);
92a5d4b38f21 jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents: 30276
diff changeset
576 /* TODO: It's probably worthwhile to restrict this to when the account
92a5d4b38f21 jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents: 30276
diff changeset
577 * state is CONNECTED, but I can /almost/ envision reasons for wanting
92a5d4b38f21 jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents: 30276
diff changeset
578 * to do things during the connection process.
92a5d4b38f21 jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents: 30276
diff changeset
579 */
92a5d4b38f21 jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents: 30276
diff changeset
580
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
581 jabber_send_raw(js, buf, len);
32160
4f1bd59cb90a jabber: Make jabber_prpl_send_raw() return strlen(buf) when len is negative.
Paul Aurich <paul@darkrain42.org>
parents: 31932
diff changeset
582 return (len < 0 ? strlen(buf) : len);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
583 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
584
27088
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
585 void jabber_send_signal_cb(PurpleConnection *pc, xmlnode **packet,
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
586 gpointer unused)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
587 {
27991
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
588 JabberStream *js;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
589 char *txt;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
590 int len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
591
27088
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
592 if (NULL == packet)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
593 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
594
30753
2244a84407a4 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents: 30688
diff changeset
595 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(pc));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
596
27991
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
597 js = purple_connection_get_protocol_data(pc);
29021
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
598
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
599 if (NULL == js)
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
600 return;
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
601
28125
53f0956f76dc jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents: 28115
diff changeset
602 if (js->bosh)
27991
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
603 if (g_str_equal((*packet)->name, "message") ||
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
604 g_str_equal((*packet)->name, "iq") ||
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
605 g_str_equal((*packet)->name, "presence"))
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
606 xmlnode_set_namespace(*packet, NS_XMPP_CLIENT);
27088
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
607 txt = xmlnode_to_str(*packet, &len);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
608 jabber_send_raw(js, txt, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
609 g_free(txt);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
610 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611
27088
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
612 void jabber_send(JabberStream *js, xmlnode *packet)
21859
e13609ce4548 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@gmail.com>
parents: 21814
diff changeset
613 {
28893
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28891
diff changeset
614 purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-sending-xmlnode", js->gc, &packet);
21859
e13609ce4548 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@gmail.com>
parents: 21814
diff changeset
615 }
e13609ce4548 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@gmail.com>
parents: 21814
diff changeset
616
25925
42dd7e591031 Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents: 25050
diff changeset
617 static gboolean jabber_keepalive_timeout(PurpleConnection *gc)
21859
e13609ce4548 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@gmail.com>
parents: 21814
diff changeset
618 {
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
619 JabberStream *js = purple_connection_get_protocol_data(gc);
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
620 purple_connection_error(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
621 _("Ping timed out"));
27151
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
622 js->keepalive_timeout = 0;
21859
e13609ce4548 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@gmail.com>
parents: 21814
diff changeset
623 return FALSE;
e13609ce4548 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@gmail.com>
parents: 21814
diff changeset
624 }
e13609ce4548 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@gmail.com>
parents: 21814
diff changeset
625
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
626 void jabber_keepalive(PurpleConnection *gc)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
627 {
29889
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29867
diff changeset
628 JabberStream *js = purple_connection_get_protocol_data(gc);
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29867
diff changeset
629 time_t now = time(NULL);
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29867
diff changeset
630
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29867
diff changeset
631 if (js->keepalive_timeout == 0 && (now - js->last_ping) >= PING_TIMEOUT) {
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29867
diff changeset
632 js->last_ping = now;
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29867
diff changeset
633
26999
6b0e150f2276 Stop trying to be clever with XMPP keepalive pings.
Paul Aurich <paul@darkrain42.org>
parents: 26956
diff changeset
634 jabber_keepalive_ping(js);
25925
42dd7e591031 Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents: 25050
diff changeset
635 js->keepalive_timeout = purple_timeout_add_seconds(120,
42dd7e591031 Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents: 25050
diff changeset
636 (GSourceFunc)(jabber_keepalive_timeout), gc);
22448
8ec6ac1b9e26 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evan.s@dreskin.net>
parents: 22432
diff changeset
637 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
638 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
639
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
640 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
641 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
642 PurpleInputCondition cond)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
643 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
644 PurpleConnection *gc = data;
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
645 JabberStream *js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
646 int len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
647 static char buf[4096];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
648
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
649 /* TODO: It should be possible to make this check unnecessary */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
650 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
651 purple_ssl_close(gsc);
30753
2244a84407a4 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents: 30688
diff changeset
652 g_return_if_reached();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
654
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
655 while((len = purple_ssl_read(gsc, buf, sizeof(buf) - 1)) > 0) {
32768
50cd80d3554e Add a purple_connection_update_last_received() function to update the
andrew.victor@mxit.com
parents: 32767
diff changeset
656 purple_connection_update_last_received(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657 buf[len] = '\0';
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28888
diff changeset
658 purple_debug_info("jabber", "Recv (ssl)(%d): %s\n", len, buf);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
659 jabber_parser_process(js, buf, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
660 if(js->reinit)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
661 jabber_stream_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
662 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
663
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
664 if(len < 0 && errno == EAGAIN)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
665 return;
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
666 else {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
667 gchar *tmp;
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
668 if (len == 0)
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
669 tmp = g_strdup_printf(_("Server closed the connection"));
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
670 else
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
671 tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
672 g_strerror(errno));
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
673 purple_connection_error(js->gc,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
674 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
675 g_free(tmp);
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
676 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
677 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
678
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
679 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
680 jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
681 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
682 PurpleConnection *gc = data;
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
683 JabberStream *js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
684 int len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
685 static char buf[4096];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
686
30753
2244a84407a4 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents: 30688
diff changeset
687 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
688
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
689 if((len = read(js->fd, buf, sizeof(buf) - 1)) > 0) {
32768
50cd80d3554e Add a purple_connection_update_last_received() function to update the
andrew.victor@mxit.com
parents: 32767
diff changeset
690 purple_connection_update_last_received(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
691 #ifdef HAVE_CYRUS_SASL
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
692 if (js->sasl_maxbuf > 0) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
693 const char *out;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
694 unsigned int olen;
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
695 int rc;
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
696
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
697 rc = sasl_decode(js->sasl, buf, len, &out, &olen);
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
698 if (rc != SASL_OK) {
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
699 gchar *error =
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
700 g_strdup_printf(_("SASL error: %s"),
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
701 sasl_errdetail(js->sasl));
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
702 purple_debug_error("jabber",
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
703 "sasl_decode_error %d: %s\n", rc,
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
704 sasl_errdetail(js->sasl));
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
705 purple_connection_error(gc,
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
706 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
707 error);
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
708 } else if (olen > 0) {
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28888
diff changeset
709 purple_debug_info("jabber", "RecvSASL (%u): %s\n", olen, out);
30275
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
710 jabber_parser_process(js, out, olen);
3a5194c70b38 jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents: 30273
diff changeset
711 if (js->reinit)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
712 jabber_stream_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
713 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
714 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
715 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
716 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
717 buf[len] = '\0';
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28888
diff changeset
718 purple_debug_info("jabber", "Recv (%d): %s\n", len, buf);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
719 jabber_parser_process(js, buf, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
720 if(js->reinit)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
721 jabber_stream_init(js);
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
722 } else if(len < 0 && errno == EAGAIN) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
723 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
724 } else {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
725 gchar *tmp;
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
726 if (len == 0)
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
727 tmp = g_strdup_printf(_("Server closed the connection"));
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
728 else
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
729 tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
730 g_strerror(errno));
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
731 purple_connection_error(js->gc,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
732 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
733 g_free(tmp);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
734 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
735 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
736
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
737 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
738 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
739 PurpleInputCondition cond)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
740 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
741 PurpleConnection *gc = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
742 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
743
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
744 /* TODO: It should be possible to make this check unnecessary */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
745 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
746 purple_ssl_close(gsc);
30753
2244a84407a4 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents: 30688
diff changeset
747 g_return_if_reached();
19999
da29f5c7dc1a 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 <daniel.atallah@gmail.com>
parents: 19722
diff changeset
748 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
749
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
750 js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
751
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
752 if(js->state == JABBER_STREAM_CONNECTING)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
753 jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
754 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
755 purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
756
17606
108f3b42976f 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 <pidgin@monitzer.com>
parents: 17603
diff changeset
757 /* Tell the app that we're doing encryption */
108f3b42976f 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 <pidgin@monitzer.com>
parents: 17603
diff changeset
758 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
759 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
760
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
761 static void
27431
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27429
diff changeset
762 txt_resolved_cb(GList *responses, gpointer data)
25596
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25593
diff changeset
763 {
25776
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25775
diff changeset
764 JabberStream *js = data;
31039
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
765 gboolean found = FALSE;
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
766
25775
1516525c86fa Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents: 25774
diff changeset
767 js->srv_query_data = NULL;
1516525c86fa Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents: 25774
diff changeset
768
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
769 while (responses) {
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
770 PurpleTxtResponse *resp = responses->data;
25597
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
771 gchar **token;
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
772 token = g_strsplit(purple_txt_response_get_content(resp), "=", 2);
25597
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
773 if (!strcmp(token[0], "_xmpp-client-xbosh")) {
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
774 purple_debug_info("jabber","Found alternative connection method using %s at %s.\n", token[0], token[1]);
25776
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25775
diff changeset
775 js->bosh = jabber_bosh_connection_init(js, token[1]);
25597
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
776 g_strfreev(token);
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
777 break;
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
778 }
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
779 g_strfreev(token);
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
780 purple_txt_response_destroy(resp);
27431
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27429
diff changeset
781 responses = g_list_delete_link(responses, responses);
25596
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25593
diff changeset
782 }
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
783
25776
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25775
diff changeset
784 if (js->bosh) {
31039
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
785 found = TRUE;
25776
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25775
diff changeset
786 jabber_bosh_connection_connect(js->bosh);
31039
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
787 }
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
788
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
789 if (!found) {
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
790 purple_debug_warning("jabber", "Unable to find alternative XMPP connection "
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
791 "methods after failing to connect directly.\n");
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
792 purple_connection_error(js->gc,
31039
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
793 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
794 _("Unable to connect"));
bc0bccdbc28f jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents: 31032
diff changeset
795 return;
25600
1cbe5a9f6efb * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25597
diff changeset
796 }
26671
400f74b95c0e First crack at Win32 TXT DNS query code and don't leak the PurpleTxtResponses
Paul Aurich <paul@darkrain42.org>
parents: 26670
diff changeset
797
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
798 if (responses) {
27431
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27429
diff changeset
799 g_list_foreach(responses, (GFunc)purple_txt_response_destroy, NULL);
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27429
diff changeset
800 g_list_free(responses);
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
801 }
25596
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25593
diff changeset
802 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
803
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
804 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
805 jabber_login_callback(gpointer data, gint source, const gchar *error)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
806 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
807 PurpleConnection *gc = data;
29288
4189f9e1627b jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents: 29287
diff changeset
808 JabberStream *js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
809
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
810 if (source < 0) {
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
811 if (js->srv_rec != NULL) {
29288
4189f9e1627b jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents: 29287
diff changeset
812 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record or connecting directly.\n", error);
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
813 try_srv_connect(js);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
814 } else {
29288
4189f9e1627b jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents: 29287
diff changeset
815 purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain);
32477
efe38e6319f2 Clean up SRV/TXT query functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32456
diff changeset
816 js->srv_query_data = purple_txt_resolve(
31932
b671728e6ee9 Use the new account-contextual DNS API everywhere. Refs #11110
Daniel Atallah <daniel.atallah@gmail.com>
parents: 31763
diff changeset
817 purple_connection_get_account(gc), "_xmppconnect",
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
818 js->user->domain, txt_resolved_cb, js);
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
819 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
820 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
821 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
822
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
823 g_free(js->srv_rec);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
824 js->srv_rec = NULL;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
825
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
826 js->fd = source;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
827
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
828 if(js->state == JABBER_STREAM_CONNECTING)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
829 jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
830
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
831 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
32773
c2dcb6d3b246 Jabber: Move the "inpa" input watcher into protocol_data.
andrew.victor@mxit.com
parents: 32768
diff changeset
832 js->inpa = purple_input_add(js->fd, PURPLE_INPUT_READ, jabber_recv_cb, gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
833 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
834
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
835 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
836 jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
837 gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
838 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
839 PurpleConnection *gc = data;
15607
66dc2367b137 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 <evan.s@dreskin.net>
parents: 15498
diff changeset
840 JabberStream *js;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
841
15607
66dc2367b137 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 <evan.s@dreskin.net>
parents: 15498
diff changeset
842 /* If the connection is already disconnected, we don't need to do anything else */
30753
2244a84407a4 jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents: 30688
diff changeset
843 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc));
15607
66dc2367b137 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 <evan.s@dreskin.net>
parents: 15498
diff changeset
844
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
845 js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
846 js->gsc = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
847
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
848 purple_connection_ssl_error (gc, error);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
849 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
850
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
851 static void tls_init(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
852 {
32773
c2dcb6d3b246 Jabber: Move the "inpa" input watcher into protocol_data.
andrew.victor@mxit.com
parents: 32768
diff changeset
853 purple_input_remove(js->inpa);
c2dcb6d3b246 Jabber: Move the "inpa" input watcher into protocol_data.
andrew.victor@mxit.com
parents: 32768
diff changeset
854 js->inpa = 0;
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
855 js->gsc = purple_ssl_connect_with_host_fd(purple_connection_get_account(js->gc), js->fd,
22034
d63892ade0a6 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 <pidgin@monitzer.com>
parents: 22000
diff changeset
856 jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc);
27984
96c38fe2cb00 Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <paul@darkrain42.org>
parents: 27711
diff changeset
857 /* The fd is no longer our concern */
96c38fe2cb00 Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <paul@darkrain42.org>
parents: 27711
diff changeset
858 js->fd = -1;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
859 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
860
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
861 static gboolean jabber_login_connect(JabberStream *js, const char *domain, const char *host, int port,
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
862 gboolean fatal_failure)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
863 {
22327
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
864 /* host should be used in preference to domain to
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
865 * allow SASL authentication to work with FQDN of the server,
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
866 * but we use domain as fallback for when users enter IP address
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
867 * in connect server */
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
868 g_free(js->serverFQDN);
22327
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
869 if (purple_ip_address_is_valid(host))
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
870 js->serverFQDN = g_strdup(domain);
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
871 else
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
872 js->serverFQDN = g_strdup(host);
15766
51dd9ae01585 pass the correct domain to cyrus sasl (sf patch 1663064)
Nathan Walp <nwalp@pidgin.im>
parents: 15729
diff changeset
873
27689
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27684
diff changeset
874 if (purple_proxy_connect(js->gc, purple_connection_get_account(js->gc),
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27684
diff changeset
875 host, port, jabber_login_callback, js->gc) == NULL) {
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
876 if (fatal_failure) {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
877 purple_connection_error(js->gc,
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
878 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
879 _("Unable to connect"));
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
880 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
881
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
882 return FALSE;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
883 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
884
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
885 return TRUE;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
886 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
887
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
888 static void try_srv_connect(JabberStream *js)
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
889 {
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
890 while (js->srv_rec != NULL && js->srv_rec_idx < js->max_srv_rec_idx) {
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
891 PurpleSrvResponse *tmp_resp = js->srv_rec + (js->srv_rec_idx++);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
892 if (jabber_login_connect(js, tmp_resp->hostname, tmp_resp->hostname, tmp_resp->port, FALSE))
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
893 return;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
894 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
895
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
896 g_free(js->srv_rec);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
897 js->srv_rec = NULL;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
898
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
899 /* Fall back to the defaults (I'm not sure if we should actually do this) */
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
900 jabber_login_connect(js, js->user->domain, js->user->domain,
27689
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27684
diff changeset
901 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222),
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
902 TRUE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
903 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
904
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
905 static void srv_resolved_cb(PurpleSrvResponse *resp, int results, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
906 {
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
907 JabberStream *js = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
908 js->srv_query_data = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
909
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
910 if(results) {
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
911 js->srv_rec = resp;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
912 js->srv_rec_idx = 0;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
913 js->max_srv_rec_idx = results;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
914 try_srv_connect(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
915 } else {
17007
37a2d6eadd34 fix #699
Nathan Walp <nwalp@pidgin.im>
parents: 16963
diff changeset
916 jabber_login_connect(js, js->user->domain, js->user->domain,
27689
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27684
diff changeset
917 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222),
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
918 TRUE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
919 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
920 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
921
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
922 static JabberStream *
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
923 jabber_stream_new(PurpleAccount *account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
924 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
925 PurpleConnection *gc = purple_account_get_connection(account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
926 JabberStream *js;
25963
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
927 PurplePresence *presence;
31761
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
928 gchar *user;
27683
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
929 gchar *slash;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
930
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
931 js = g_new0(JabberStream, 1);
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
932 purple_connection_set_protocol_data(gc, js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
933 js->gc = gc;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
934 js->fd = -1;
27683
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
935
31761
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
936 user = g_strdup(purple_account_get_username(account));
27683
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
937 /* jabber_id_new doesn't accept "user@domain/" as valid */
31761
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
938 slash = strchr(user, '/');
27683
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
939 if (slash && *(slash + 1) == '\0')
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
940 *slash = '\0';
31761
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
941 js->user = jabber_id_new(user);
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
942
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
943 if (!js->user) {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
944 purple_connection_error(gc,
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
945 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
946 _("Invalid XMPP ID"));
31761
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
947 g_free(user);
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
948 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
949 return NULL;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
950 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
951
30107
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 30031
diff changeset
952 if (!js->user->node || *(js->user->node) == '\0') {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
953 purple_connection_error(gc,
30107
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 30031
diff changeset
954 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 30031
diff changeset
955 _("Invalid XMPP ID. Username portion must be set."));
31761
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
956 g_free(user);
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
957 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
958 return NULL;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
959 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
960
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
961 if (!js->user->domain || *(js->user->domain) == '\0') {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
962 purple_connection_error(gc,
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
963 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
964 _("Invalid XMPP ID. Domain must be set."));
31761
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
965 g_free(user);
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
966 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
967 return NULL;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
968 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
969
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
970 js->buddies = g_hash_table_new_full(g_str_hash, g_str_equal,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
971 g_free, (GDestroyNotify)jabber_buddy_free);
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
972
31032
adce8f13a749 jabber: Set a connection display name even when using legacy auth
Paul Aurich <paul@darkrain42.org>
parents: 31015
diff changeset
973 /* This is overridden during binding, but we need it here
adce8f13a749 jabber: Set a connection display name even when using legacy auth
Paul Aurich <paul@darkrain42.org>
parents: 31015
diff changeset
974 * in case the server only does legacy non-sasl auth!.
adce8f13a749 jabber: Set a connection display name even when using legacy auth
Paul Aurich <paul@darkrain42.org>
parents: 31015
diff changeset
975 */
31761
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
976 purple_connection_set_display_name(gc, user);
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
977
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
978 js->user_jb = jabber_buddy_find(js, user, TRUE);
d2962c2d7791 disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents: 31759
diff changeset
979 g_free(user);
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28131
diff changeset
980 if (!js->user_jb) {
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
981 /* This basically *can't* fail, but for good measure... */
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
982 purple_connection_error(gc,
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
983 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
984 _("Invalid XMPP ID"));
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
985 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
986 g_return_val_if_reached(NULL);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
987 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
988
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28131
diff changeset
989 js->user_jb->subscription |= JABBER_SUB_BOTH;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
990
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
991 js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
992 g_free, g_free);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
993 js->chats = g_hash_table_new_full(g_str_hash, g_str_equal,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
994 g_free, (GDestroyNotify)jabber_chat_free);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
995 js->next_id = g_random_int();
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
996 js->write_buffer = purple_circ_buffer_new(512);
21978
cacc01b50a23 Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <stu@nosnilmot.com>
parents: 21973
diff changeset
997 js->old_length = 0;
27151
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
998 js->keepalive_timeout = 0;
30184
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
999 js->max_inactivity = DEFAULT_INACTIVITY_TIME;
25995
6d7d360687bd Jabber: Default protocol version to 1.0.
Paul Aurich <paul@darkrain42.org>
parents: 25989
diff changeset
1000 /* Set the default protocol version to 1.0. Overridden in parser.c. */
29961
618c4165d4f8 jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents: 29960
diff changeset
1001 js->protocol_version.major = 1;
618c4165d4f8 jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents: 29960
diff changeset
1002 js->protocol_version.minor = 0;
25648
16543025aed1 Moved jingle.c global variable "sessions" into JabberStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25647
diff changeset
1003 js->sessions = NULL;
26162
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1004 js->stun_ip = NULL;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1005 js->stun_port = 0;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1006 js->stun_query = NULL;
30926
196e4c5b2043 Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents: 28447
diff changeset
1007 js->google_relay_token = NULL;
196e4c5b2043 Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents: 28447
diff changeset
1008 js->google_relay_host = NULL;
30939
e0796db1df8a Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents: 30936
diff changeset
1009 js->google_relay_requests = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1010
25962
a92df60855f3 Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents: 25956
diff changeset
1011 /* if we are idle, set idle-ness on the stream (this could happen if we get
a92df60855f3 Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents: 25956
diff changeset
1012 disconnected and the reconnects while being idle. I don't think it makes
a92df60855f3 Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents: 25956
diff changeset
1013 sense to do this when registering a new account... */
25963
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
1014 presence = purple_account_get_presence(account);
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
1015 if (purple_presence_is_idle(presence))
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
1016 js->idle = purple_presence_get_idle_time(presence);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1017
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1018 return js;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1019 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1020
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1021 static void
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1022 jabber_stream_connect(JabberStream *js)
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1023 {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1024 PurpleConnection *gc = js->gc;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1025 PurpleAccount *account = purple_connection_get_account(gc);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1026 const char *connect_server = purple_account_get_string(account,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1027 "connect_server", "");
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1028 const char *bosh_url = purple_account_get_string(account,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1029 "bosh_url", "");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1030
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1031 jabber_stream_set_state(js, JABBER_STREAM_CONNECTING);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1032
27255
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1033 /* If both BOSH and a Connect Server are specified, we prefer BOSH. I'm not
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1034 * attached to that choice, though.
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1035 */
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1036 if (*bosh_url) {
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1037 js->bosh = jabber_bosh_connection_init(js, bosh_url);
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1038 if (js->bosh)
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1039 jabber_bosh_connection_connect(js->bosh);
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1040 else {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
1041 purple_connection_error(gc,
25834
7d2e85f78aec Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents: 25833
diff changeset
1042 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
27255
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1043 _("Malformed BOSH URL"));
25834
7d2e85f78aec Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents: 25833
diff changeset
1044 }
27255
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1045
25774
514051f3b6cf Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents: 25772
diff changeset
1046 return;
514051f3b6cf Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents: 25772
diff changeset
1047 }
514051f3b6cf Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents: 25772
diff changeset
1048
27255
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1049 js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain);
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
1050
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1051 /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */
30895
8084631e2e84 jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents: 30881
diff changeset
1052 if (g_str_equal("old_ssl", purple_account_get_string(account, "connection_security", JABBER_DEFAULT_REQUIRE_TLS))) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1053 if(purple_ssl_is_supported()) {
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
1054 js->gsc = purple_ssl_connect(account, js->certificate_CN,
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1055 purple_account_get_int(account, "port", 5223),
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
1056 jabber_login_callback_ssl, jabber_ssl_connect_failure, gc);
25835
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
1057 if (!js->gsc) {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
1058 purple_connection_error(gc,
25835
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
1059 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
1060 _("Unable to establish SSL connection"));
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
1061 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1062 } else {
32330
a5b556ac1de5 Rename purple_connection_error_reason to purple_connection_error
Mark Doliner <mark@kingant.net>
parents: 32239
diff changeset
1063 purple_connection_error(gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
1064 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
1065 _("SSL support unavailable"));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1066 }
25835
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
1067
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
1068 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1069 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1070
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1071 /* no old-ssl, so if they've specified a connect server, we'll use that, otherwise we'll
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1072 * invoke the magic of SRV lookups, to figure out host and port */
25987
c4fd9222dda1 propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
parents: 25443 25835
diff changeset
1073 if(connect_server[0]) {
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
1074 jabber_login_connect(js, js->user->domain, connect_server,
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
1075 purple_account_get_int(account, "port", 5222), TRUE);
25835
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
1076 } else {
32477
efe38e6319f2 Clean up SRV/TXT query functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32456
diff changeset
1077 js->srv_query_data = purple_srv_resolve(account, "xmpp-client",
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
1078 "tcp", js->user->domain, srv_resolved_cb, js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1079 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1080 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1081
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
1082 void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1083 jabber_login(PurpleAccount *account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1084 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1085 PurpleConnection *gc = purple_account_get_connection(account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1086 JabberStream *js;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1087 PurpleStoredImage *image;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1088
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
1089 purple_connection_set_flags(gc, PURPLE_CONNECTION_HTML | PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY);
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1090 js = jabber_stream_new(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1091 if (js == NULL)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1092 return;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1093
29439
031fd1cd88df jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents: 29414
diff changeset
1094 /* TODO: Remove this at some point. Added 2010-02-14 (v2.6.6) */
031fd1cd88df jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents: 29414
diff changeset
1095 if (g_str_equal("proxy.jabber.org", purple_account_get_string(account, "ft_proxies", "")))
031fd1cd88df jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents: 29414
diff changeset
1096 purple_account_set_string(account, "ft_proxies", JABBER_DEFAULT_FT_PROXIES);
031fd1cd88df jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents: 29414
diff changeset
1097
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1098 /*
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1099 * Calculate the avatar hash for our current image so we know (when we
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1100 * fetch our vCard and PEP avatar) if we should send our avatar to the
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1101 * server.
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1102 */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1103 image = purple_buddy_icons_find_account_icon(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1104 if (image != NULL) {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1105 js->initial_avatar_hash =
30031
9f59abd49def jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents: 30003
diff changeset
1106 jabber_calculate_data_hash(purple_imgstore_get_data(image),
9f59abd49def jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents: 30003
diff changeset
1107 purple_imgstore_get_size(image), "sha1");
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1108 purple_imgstore_unref(image);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1109 }
26162
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1110
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1111 jabber_stream_connect(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1112 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1113
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1114
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1115 static gboolean
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1116 conn_close_cb(gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1117 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1118 JabberStream *js = data;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1119 PurpleAccount *account = purple_connection_get_account(js->gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1120
17603
7a3a66c6530a Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17599
diff changeset
1121 jabber_parser_free(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1122
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1123 purple_account_disconnect(account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1124
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1125 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1126 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1127
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1128 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1129 jabber_connection_schedule_close(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1130 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1131 purple_timeout_add(0, conn_close_cb, js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1132 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1133
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1134 static void
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1135 jabber_registration_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1136 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1137 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1138 {
17607
ca0b86f3dbd2 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 <pidgin@monitzer.com>
parents: 17606
diff changeset
1139 PurpleAccount *account = purple_connection_get_account(js->gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1140 char *buf;
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1141 char *to = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1142
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1143 if (type == JABBER_IQ_RESULT) {
17607
ca0b86f3dbd2 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 <pidgin@monitzer.com>
parents: 17606
diff changeset
1144 if(js->registration) {
27366
73c8e1964eef A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27255
diff changeset
1145 buf = g_strdup_printf(_("Registration of %s@%s successful"),
27413
46cc3674b13c Indentation fix.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27151
diff changeset
1146 js->user->node, js->user->domain);
32815
cb486df263ef Introduce purple_account_register_completed() to handle the invoking of any
andrew.victor@mxit.com
parents: 32790
diff changeset
1147 purple_account_register_completed(account, TRUE);
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1148 } else {
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1149 g_return_if_fail(to != NULL);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1150 buf = g_strdup_printf(_("Registration to %s successful"),
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1151 to);
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1152 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1153 purple_notify_info(NULL, _("Registration Successful"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1154 _("Registration Successful"), buf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1155 g_free(buf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1156 } else {
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
1157 char *msg = jabber_parse_error(js, packet, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1158
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1159 if(!msg)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1160 msg = g_strdup(_("Unknown Error"));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1161
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1162 purple_notify_error(NULL, _("Registration Failed"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1163 _("Registration Failed"), msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1164 g_free(msg);
32815
cb486df263ef Introduce purple_account_register_completed() to handle the invoking of any
andrew.victor@mxit.com
parents: 32790
diff changeset
1165 purple_account_register_completed(account, FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1166 }
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1167 g_free(to);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1168 if(js->registration)
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1169 jabber_connection_schedule_close(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1170 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1171
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1172 static void
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1173 jabber_unregistration_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1174 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1175 xmlnode *packet, gpointer data)
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1176 {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1177 char *buf;
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1178 char *to = data;
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1179
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1180 /* This function is never called for unregistering our XMPP account from
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1181 * the server, so there should always be a 'to' address. */
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1182 g_return_if_fail(to != NULL);
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1183
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1184 if (type == JABBER_IQ_RESULT) {
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1185 buf = g_strdup_printf(_("Registration from %s successfully removed"),
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1186 to);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1187 purple_notify_info(NULL, _("Unregistration Successful"),
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1188 _("Unregistration Successful"), buf);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1189 g_free(buf);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1190 } else {
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
1191 char *msg = jabber_parse_error(js, packet, NULL);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1192
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1193 if(!msg)
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1194 msg = g_strdup(_("Unknown Error"));
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1195
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1196 purple_notify_error(NULL, _("Unregistration Failed"),
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1197 _("Unregistration Failed"), msg);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1198 g_free(msg);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1199 }
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1200 g_free(to);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1201 }
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1202
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1203 typedef struct _JabberRegisterCBData {
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1204 JabberStream *js;
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1205 char *who;
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1206 } JabberRegisterCBData;
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1207
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1208 static void
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1209 jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1210 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1211 GList *groups, *flds;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1212 xmlnode *query, *y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1213 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1214 char *username;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1215
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1216 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1217 query = xmlnode_get_child(iq->node, "query");
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1218 if (cbdata->who)
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1219 xmlnode_set_attrib(iq->node, "to", cbdata->who);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1220
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1221 for(groups = purple_request_fields_get_groups(fields); groups;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1222 groups = groups->next) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1223 for(flds = purple_request_field_group_get_fields(groups->data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1224 flds; flds = flds->next) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1225 PurpleRequestField *field = flds->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1226 const char *id = purple_request_field_get_id(field);
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1227 if(!strcmp(id,"unregister")) {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1228 gboolean value = purple_request_field_bool_get_value(field);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1229 if(value) {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1230 /* unregister from service. this doesn't include any of the fields, so remove them from the stanza by recreating it
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1231 (there's no "remove child" function for xmlnode) */
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1232 jabber_iq_free(iq);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1233 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register");
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1234 query = xmlnode_get_child(iq->node, "query");
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1235 if (cbdata->who)
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1236 xmlnode_set_attrib(iq->node,"to",cbdata->who);
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1237 xmlnode_new_child(query, "remove");
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1238
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1239 jabber_iq_set_callback(iq, jabber_unregistration_result_cb, cbdata->who);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1240
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1241 jabber_iq_send(iq);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1242 g_free(cbdata);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1243 return;
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1244 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1245 } else {
28729
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1246 const char *ids[] = {"username", "password", "name", "email", "nick", "first",
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1247 "last", "address", "city", "state", "zip", "phone", "url", "date",
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1248 NULL};
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1249 const char *value = purple_request_field_string_get_value(field);
28729
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1250 int i;
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1251 for (i = 0; ids[i]; i++) {
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1252 if (!strcmp(id, ids[i]))
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1253 break;
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1254 }
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1255
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1256 if (!ids[i])
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1257 continue;
28729
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1258 y = xmlnode_new_child(query, ids[i]);
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1259 xmlnode_insert_data(y, value, -1);
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1260 if(cbdata->js->registration && !strcmp(id, "username")) {
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1261 g_free(cbdata->js->user->node);
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1262 cbdata->js->user->node = g_strdup(value);
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1263 }
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1264 if(cbdata->js->registration && !strcmp(id, "password"))
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
1265 purple_account_set_password(purple_connection_get_account(cbdata->js->gc), value);
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1266 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1267 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1268 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1269
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1270 if(cbdata->js->registration) {
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1271 username = g_strdup_printf("%s@%s%s%s", cbdata->js->user->node, cbdata->js->user->domain,
29113
3bf5dbff753b jabber: Complete the fix for a NULL printf() on registration on Windows. Closes #10420 again.
Paul Aurich <paul@darkrain42.org>
parents: 29031
diff changeset
1272 cbdata->js->user->resource ? "/" : "",
3bf5dbff753b jabber: Complete the fix for a NULL printf() on registration on Windows. Closes #10420 again.
Paul Aurich <paul@darkrain42.org>
parents: 29031
diff changeset
1273 cbdata->js->user->resource ? cbdata->js->user->resource : "");
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
1274 purple_account_set_username(purple_connection_get_account(cbdata->js->gc), username);
21592
68b036c452f3 The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evan.s@dreskin.net>
parents: 21591
diff changeset
1275 g_free(username);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1276 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1277
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1278 jabber_iq_set_callback(iq, jabber_registration_result_cb, cbdata->who);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1279
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1280 jabber_iq_send(iq);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1281 g_free(cbdata);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1282 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1283
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1284 static void
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1285 jabber_register_cancel_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1286 {
17607
ca0b86f3dbd2 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 <pidgin@monitzer.com>
parents: 17606
diff changeset
1287 PurpleAccount *account = purple_connection_get_account(cbdata->js->gc);
19489
b0733d5d7621 Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <pidgin@monitzer.com>
parents: 19277
diff changeset
1288 if(account && cbdata->js->registration) {
32815
cb486df263ef Introduce purple_account_register_completed() to handle the invoking of any
andrew.victor@mxit.com
parents: 32790
diff changeset
1289 purple_account_register_completed(account, FALSE);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1290 jabber_connection_schedule_close(cbdata->js);
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1291 }
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1292 g_free(cbdata->who);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1293 g_free(cbdata);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1294 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1295
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1296 static void jabber_register_x_data_cb(JabberStream *js, xmlnode *result, gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1297 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1298 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1299 JabberIq *iq;
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1300 char *to = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1301
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1302 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1303 query = xmlnode_get_child(iq->node, "query");
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1304 if (to)
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1305 xmlnode_set_attrib(iq->node,"to",to);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1306
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1307 xmlnode_insert_child(query, result);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1308
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1309 jabber_iq_set_callback(iq, jabber_registration_result_cb, to);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1310 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1311 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1312
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1313 static const struct {
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1314 const char *name;
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1315 const char *label;
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1316 } registration_fields[] = {
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1317 { "email", N_("Email") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1318 { "nick", N_("Nickname") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1319 { "first", N_("First name") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1320 { "last", N_("Last name") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1321 { "address", N_("Address") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1322 { "city", N_("City") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1323 { "state", N_("State") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1324 { "zip", N_("Postal code") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1325 { "phone", N_("Phone") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1326 { "url", N_("URL") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1327 { "date", N_("Date") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1328 { NULL, NULL }
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1329 };
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1330
25933
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 25930
diff changeset
1331 void jabber_register_parse(JabberStream *js, const char *from, JabberIqType type,
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 25930
diff changeset
1332 const char *id, xmlnode *query)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1333 {
17607
ca0b86f3dbd2 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 <pidgin@monitzer.com>
parents: 17606
diff changeset
1334 PurpleAccount *account = purple_connection_get_account(js->gc);
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1335 PurpleRequestFields *fields;
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1336 PurpleRequestFieldGroup *group;
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1337 PurpleRequestField *field;
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1338 xmlnode *x, *y, *node;
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1339 char *instructions;
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1340 JabberRegisterCBData *cbdata;
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1341 gboolean registered = FALSE;
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1342 int i;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1343
25933
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 25930
diff changeset
1344 if (type != JABBER_IQ_RESULT)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1345 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1346
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1347 if(js->registration) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1348 /* get rid of the login thingy */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1349 purple_connection_set_state(js->gc, PURPLE_CONNECTED);
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1350 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1351
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1352 if(xmlnode_get_child(query, "registered")) {
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1353 registered = TRUE;
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1354
17607
ca0b86f3dbd2 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 <pidgin@monitzer.com>
parents: 17606
diff changeset
1355 if(js->registration) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1356 purple_notify_error(NULL, _("Already Registered"),
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1357 _("Already Registered"), NULL);
32815
cb486df263ef Introduce purple_account_register_completed() to handle the invoking of any
andrew.victor@mxit.com
parents: 32790
diff changeset
1358 purple_account_register_completed(account, FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1359 jabber_connection_schedule_close(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1360 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1361 }
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1362 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1363
25066
256fbe98f6be The jabber_register_parse function was looking for the <x> node as a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25050
diff changeset
1364 if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) {
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1365 jabber_x_data_request(js, x, jabber_register_x_data_cb, g_strdup(from));
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1366 return;
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1367
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1368 } else if((x = xmlnode_get_child_with_namespace(query, "x", NS_OOB_X_DATA))) {
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1369 xmlnode *url;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1370
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1371 if((url = xmlnode_get_child(x, "url"))) {
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1372 char *href;
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1373 if((href = xmlnode_get_data(url))) {
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1374 purple_notify_uri(NULL, href);
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1375 g_free(href);
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1376
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1377 if(js->registration) {
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1378 js->gc->wants_to_die = TRUE;
32815
cb486df263ef Introduce purple_account_register_completed() to handle the invoking of any
andrew.victor@mxit.com
parents: 32790
diff changeset
1379 /* succeeded, but we have no login info */
cb486df263ef Introduce purple_account_register_completed() to handle the invoking of any
andrew.victor@mxit.com
parents: 32790
diff changeset
1380 purple_account_register_completed(account, TRUE);
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1381 jabber_connection_schedule_close(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1382 }
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1383 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1384 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1385 }
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1386 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1387
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1388 /* as a last resort, use the old jabber:iq:register syntax */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1389
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1390 fields = purple_request_fields_new();
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1391 group = purple_request_field_group_new(NULL);
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1392 purple_request_fields_add_group(fields, group);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1393
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1394 if((node = xmlnode_get_child(query, "username"))) {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1395 char *data = xmlnode_get_data(node);
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1396 if(js->registration)
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1397 field = purple_request_field_string_new("username", _("Username"), data ? data : js->user->node, FALSE);
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1398 else
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1399 field = purple_request_field_string_new("username", _("Username"), data, FALSE);
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1400
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1401 purple_request_field_group_add_field(group, field);
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1402 g_free(data);
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1403 }
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1404 if((node = xmlnode_get_child(query, "password"))) {
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1405 if(js->registration)
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1406 field = purple_request_field_string_new("password", _("Password"),
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1407 purple_connection_get_password(js->gc), FALSE);
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1408 else {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1409 char *data = xmlnode_get_data(node);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1410 field = purple_request_field_string_new("password", _("Password"), data, FALSE);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1411 g_free(data);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1412 }
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1413
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1414 purple_request_field_string_set_masked(field, TRUE);
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1415 purple_request_field_group_add_field(group, field);
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1416 }
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1417
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1418 if((node = xmlnode_get_child(query, "name"))) {
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1419 if(js->registration)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1420 field = purple_request_field_string_new("name", _("Name"),
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
1421 purple_account_get_alias(purple_connection_get_account(js->gc)), FALSE);
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1422 else {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1423 char *data = xmlnode_get_data(node);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1424 field = purple_request_field_string_new("name", _("Name"), data, FALSE);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1425 g_free(data);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1426 }
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1427 purple_request_field_group_add_field(group, field);
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1428 }
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1429
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1430 for (i = 0; registration_fields[i].name != NULL; ++i) {
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1431 if ((node = xmlnode_get_child(query, registration_fields[i].name))) {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1432 char *data = xmlnode_get_data(node);
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1433 field = purple_request_field_string_new(registration_fields[i].name,
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1434 _(registration_fields[i].label),
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1435 data, FALSE);
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1436 purple_request_field_group_add_field(group, field);
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1437 g_free(data);
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1438 }
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1439 }
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1440
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1441 if(registered) {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1442 field = purple_request_field_bool_new("unregister", _("Unregister"), FALSE);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1443 purple_request_field_group_add_field(group, field);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1444 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1445
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1446 if((y = xmlnode_get_child(query, "instructions")))
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1447 instructions = xmlnode_get_data(y);
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1448 else if(registered)
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1449 instructions = g_strdup(_("Please fill out the information below "
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1450 "to change your account registration."));
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1451 else
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1452 instructions = g_strdup(_("Please fill out the information below "
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1453 "to register your new account."));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1454
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1455 cbdata = g_new0(JabberRegisterCBData, 1);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1456 cbdata->js = js;
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1457 cbdata->who = g_strdup(from);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1458
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1459 if(js->registration)
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1460 purple_request_fields(js->gc, _("Register New XMPP Account"),
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16822
diff changeset
1461 _("Register New XMPP Account"), instructions, fields,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1462 _("Register"), G_CALLBACK(jabber_register_cb),
16442
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16240
diff changeset
1463 _("Cancel"), G_CALLBACK(jabber_register_cancel_cb),
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16240
diff changeset
1464 purple_connection_get_account(js->gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1465 cbdata);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1466 else {
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1467 char *title;
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1468 g_return_if_fail(from != NULL);
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1469 title = registered ? g_strdup_printf(_("Change Account Registration at %s"), from)
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1470 :g_strdup_printf(_("Register New Account at %s"), from);
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1471 purple_request_fields(js->gc, title,
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1472 title, instructions, fields,
21326
6ba02326c9e1 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 <evan.s@dreskin.net>
parents: 21284
diff changeset
1473 (registered ? _("Change Registration") : _("Register")), G_CALLBACK(jabber_register_cb),
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1474 _("Cancel"), G_CALLBACK(jabber_register_cancel_cb),
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1475 purple_connection_get_account(js->gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1476 cbdata);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1477 g_free(title);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1478 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1479
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1480 g_free(instructions);
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1481 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1482
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1483 void jabber_register_start(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1484 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1485 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1486
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1487 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1488 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1489 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1490
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1491 void jabber_register_gateway(JabberStream *js, const char *gateway) {
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1492 JabberIq *iq;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1493
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1494 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1495 xmlnode_set_attrib(iq->node, "to", gateway);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1496 jabber_iq_send(iq);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1497 }
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1498
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
1499 void jabber_register_account(PurpleAccount *account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1500 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1501 JabberStream *js;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1502
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1503 js = jabber_stream_new(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1504 if (js == NULL)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1505 return;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1506
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1507 js->registration = TRUE;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1508 jabber_stream_connect(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1509 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1510
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1511 static void
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1512 jabber_unregister_account_iq_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1513 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1514 xmlnode *packet, gpointer data)
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1515 {
18920
2a9d60d7af82 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 <pidgin@monitzer.com>
parents: 18919
diff changeset
1516 PurpleAccount *account = purple_connection_get_account(js->gc);
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1517
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1518 if (type == JABBER_IQ_ERROR) {
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
1519 char *msg = jabber_parse_error(js, packet, NULL);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1520
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1521 purple_notify_error(js->gc, _("Error unregistering account"),
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1522 _("Error unregistering account"), msg);
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1523 g_free(msg);
18920
2a9d60d7af82 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 <pidgin@monitzer.com>
parents: 18919
diff changeset
1524 if(js->unregistration_cb)
18921
ba3b22cd280b Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18920
diff changeset
1525 js->unregistration_cb(account, FALSE, js->unregistration_user_data);
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1526 } else {
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1527 purple_notify_info(js->gc, _("Account successfully unregistered"),
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1528 _("Account successfully unregistered"), NULL);
18920
2a9d60d7af82 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 <pidgin@monitzer.com>
parents: 18919
diff changeset
1529 if(js->unregistration_cb)
18921
ba3b22cd280b Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18920
diff changeset
1530 js->unregistration_cb(account, TRUE, js->unregistration_user_data);
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1531 }
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1532 }
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1533
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1534 static void jabber_unregister_account_cb(JabberStream *js) {
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1535 JabberIq *iq;
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1536 xmlnode *query;
20000
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1537
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1538 g_return_if_fail(js->unregistration);
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1539
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1540 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register");
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1541
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1542 query = xmlnode_get_child_with_namespace(iq->node, "query", "jabber:iq:register");
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1543
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1544 xmlnode_new_child(query, "remove");
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1545 xmlnode_set_attrib(iq->node, "to", js->user->domain);
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1546
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1547 jabber_iq_set_callback(iq, jabber_unregister_account_iq_cb, NULL);
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1548 jabber_iq_send(iq);
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1549 }
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1550
18920
2a9d60d7af82 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 <pidgin@monitzer.com>
parents: 18919
diff changeset
1551 void jabber_unregister_account(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data) {
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1552 PurpleConnection *gc = purple_account_get_connection(account);
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1553 JabberStream *js;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1554
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
1555 if (purple_connection_get_state(gc) != PURPLE_CONNECTED) {
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
1556 if (purple_connection_get_state(gc) != PURPLE_CONNECTING)
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1557 jabber_login(account);
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
1558 js = purple_connection_get_protocol_data(gc);
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1559 js->unregistration = TRUE;
18920
2a9d60d7af82 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 <pidgin@monitzer.com>
parents: 18919
diff changeset
1560 js->unregistration_cb = cb;
2a9d60d7af82 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 <pidgin@monitzer.com>
parents: 18919
diff changeset
1561 js->unregistration_user_data = user_data;
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1562 return;
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1563 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1564
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
1565 js = purple_connection_get_protocol_data(gc);
20000
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1566
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1567 if (js->unregistration) {
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1568 purple_debug_error("jabber", "Unregistration in process; ignoring duplicate request.\n");
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1569 return;
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1570 }
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1571
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1572 js->unregistration = TRUE;
18920
2a9d60d7af82 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 <pidgin@monitzer.com>
parents: 18919
diff changeset
1573 js->unregistration_cb = cb;
2a9d60d7af82 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 <pidgin@monitzer.com>
parents: 18919
diff changeset
1574 js->unregistration_user_data = user_data;
20000
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1575
18703
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1576 jabber_unregister_account_cb(js);
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1577 }
033b128f7c21 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18695
diff changeset
1578
25872
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1579 /* TODO: As Will pointed out in IRC, after being notified by the core to
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1580 * shutdown, we should async. wait for the server to send us the stream
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1581 * termination before destorying everything. That seems like it would require
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1582 * changing the semantics of prpl->close(), so it's a good idea for 3.0.0.
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1583 */
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
1584 void jabber_close(PurpleConnection *gc)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1585 {
29333
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 29332
diff changeset
1586 JabberStream *js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1587
25667
41d6d4217d21 Further decoupled Jingle code from jabber.c:
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25666
diff changeset
1588 /* Close all of the open Jingle sessions on this stream */
26014
bd598b606ca4 Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25729
diff changeset
1589 jingle_terminate_sessions(js);
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25646
diff changeset
1590
29333
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 29332
diff changeset
1591 if (js->bosh)
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 29332
diff changeset
1592 jabber_bosh_connection_close(js->bosh);
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 29332
diff changeset
1593 else if ((js->gsc && js->gsc->fd > 0) || js->fd > 0)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1594 jabber_send_raw(js, "</stream:stream>", -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1595
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1596 if (js->srv_query_data)
32477
efe38e6319f2 Clean up SRV/TXT query functions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32456
diff changeset
1597 purple_srv_txt_query_destroy(js->srv_query_data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1598
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1599 if(js->gsc) {
29333
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 29332
diff changeset
1600 purple_ssl_close(js->gsc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1601 } else if (js->fd > 0) {
32773
c2dcb6d3b246 Jabber: Move the "inpa" input watcher into protocol_data.
andrew.victor@mxit.com
parents: 32768
diff changeset
1602 if(js->inpa) {
c2dcb6d3b246 Jabber: Move the "inpa" input watcher into protocol_data.
andrew.victor@mxit.com
parents: 32768
diff changeset
1603 purple_input_remove(js->inpa);
c2dcb6d3b246 Jabber: Move the "inpa" input watcher into protocol_data.
andrew.victor@mxit.com
parents: 32768
diff changeset
1604 js->inpa = 0;
c2dcb6d3b246 Jabber: Move the "inpa" input watcher into protocol_data.
andrew.victor@mxit.com
parents: 32768
diff changeset
1605 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1606 close(js->fd);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1607 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1608
25777
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
1609 if (js->bosh)
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
1610 jabber_bosh_connection_destroy(js->bosh);
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
1611
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1612 jabber_buddy_remove_all_pending_buddy_info_requests(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1613
17603
7a3a66c6530a Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17599
diff changeset
1614 jabber_parser_free(js);
7a3a66c6530a Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17599
diff changeset
1615
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1616 if(js->iq_callbacks)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1617 g_hash_table_destroy(js->iq_callbacks);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1618 if(js->buddies)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1619 g_hash_table_destroy(js->buddies);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1620 if(js->chats)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1621 g_hash_table_destroy(js->chats);
21603
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1622
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1623 while(js->chat_servers) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1624 g_free(js->chat_servers->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1625 js->chat_servers = g_list_delete_link(js->chat_servers, js->chat_servers);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1626 }
21603
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1627
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1628 while(js->user_directories) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1629 g_free(js->user_directories->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1630 js->user_directories = g_list_delete_link(js->user_directories, js->user_directories);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1631 }
21603
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1632
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1633 while(js->bs_proxies) {
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1634 JabberBytestreamsStreamhost *sh = js->bs_proxies->data;
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1635 g_free(sh->jid);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1636 g_free(sh->host);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1637 g_free(sh->zeroconf);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1638 g_free(sh);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1639 js->bs_proxies = g_list_delete_link(js->bs_proxies, js->bs_proxies);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1640 }
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1641
23744
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1642 while(js->url_datas) {
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1643 purple_util_fetch_url_cancel(js->url_datas->data);
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1644 js->url_datas = g_slist_delete_link(js->url_datas, js->url_datas);
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1645 }
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1646
21603
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1647 g_free(js->stream_id);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1648 if(js->user)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1649 jabber_id_free(js->user);
25832
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25829
diff changeset
1650 g_free(js->initial_avatar_hash);
21603
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1651 g_free(js->avatar_hash);
25742
4040da08a733 Entity Capabilities must be per-JabberStream
Paul Aurich <paul@darkrain42.org>
parents: 25741
diff changeset
1652 g_free(js->caps_hash);
21603
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1653
30158
0f895633faeb jabber: Stifle an assertion warning.
Paul Aurich <paul@darkrain42.org>
parents: 30146
diff changeset
1654 if (js->write_buffer)
0f895633faeb jabber: Stifle an assertion warning.
Paul Aurich <paul@darkrain42.org>
parents: 30146
diff changeset
1655 purple_circ_buffer_destroy(js->write_buffer);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1656 if(js->writeh)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1657 purple_input_remove(js->writeh);
29089
c1d41b7484ff jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents: 29078
diff changeset
1658 if (js->auth_mech && js->auth_mech->dispose)
c1d41b7484ff jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents: 29078
diff changeset
1659 js->auth_mech->dispose(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1660 #ifdef HAVE_CYRUS_SASL
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1661 if(js->sasl)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1662 sasl_dispose(&js->sasl);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1663 if(js->sasl_mechs)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1664 g_string_free(js->sasl_mechs, TRUE);
21603
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1665 g_free(js->sasl_cb);
30881
a5131a257967 jabber: Fix a pernicious race condition in our cyrus auth code
Paul Aurich <paul@darkrain42.org>
parents: 30849
diff changeset
1666 /* Note: _not_ g_free. See auth_cyrus.c:jabber_sasl_cb_secret */
a5131a257967 jabber: Fix a pernicious race condition in our cyrus auth code
Paul Aurich <paul@darkrain42.org>
parents: 30849
diff changeset
1667 free(js->sasl_secret);
18929
67cb28c0ec89 applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18163
diff changeset
1668 #endif
21603
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1669 g_free(js->serverFQDN);
17610
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
1670 while(js->commands) {
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
1671 JabberAdHocCommands *cmd = js->commands->data;
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
1672 g_free(cmd->jid);
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
1673 g_free(cmd->node);
17620
11dd7969dd4b Fixed copy/paste error.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17617
diff changeset
1674 g_free(cmd->name);
17610
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
1675 g_free(cmd);
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
1676 js->commands = g_list_delete_link(js->commands, js->commands);
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
1677 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1678 g_free(js->server_name);
22034
d63892ade0a6 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 <pidgin@monitzer.com>
parents: 22000
diff changeset
1679 g_free(js->certificate_CN);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1680 g_free(js->gmail_last_time);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1681 g_free(js->gmail_last_tid);
21603
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1682 g_free(js->old_msg);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1683 g_free(js->old_avatarhash);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1684 g_free(js->old_artist);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1685 g_free(js->old_title);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1686 g_free(js->old_source);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1687 g_free(js->old_uri);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1688 g_free(js->old_track);
a4b6854737d5 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 <daniel.atallah@gmail.com>
parents: 21592
diff changeset
1689
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 27991
diff changeset
1690 if (js->vcard_timer != 0)
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 27991
diff changeset
1691 purple_timeout_remove(js->vcard_timer);
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 27991
diff changeset
1692
27151
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
1693 if (js->keepalive_timeout != 0)
21964
eaaac273d80c 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 <evan.s@dreskin.net>
parents: 21948
diff changeset
1694 purple_timeout_remove(js->keepalive_timeout);
30184
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
1695 if (js->inactivity_timer != 0)
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
1696 purple_timeout_remove(js->inactivity_timer);
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
1697
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
1698 g_free(js->srv_rec);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
1699 js->srv_rec = NULL;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
1700
26162
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1701 g_free(js->stun_ip);
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1702 js->stun_ip = NULL;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1703
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1704 /* cancel DNS query for STUN, if one is ongoing */
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1705 if (js->stun_query) {
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1706 purple_dnsquery_destroy(js->stun_query);
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1707 js->stun_query = NULL;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1708 }
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
1709
30926
196e4c5b2043 Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents: 28447
diff changeset
1710 /* remove Google relay-related stuff */
196e4c5b2043 Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents: 28447
diff changeset
1711 g_free(js->google_relay_token);
196e4c5b2043 Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents: 28447
diff changeset
1712 g_free(js->google_relay_host);
30939
e0796db1df8a Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents: 30936
diff changeset
1713 if (js->google_relay_requests) {
e0796db1df8a Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents: 30936
diff changeset
1714 while (js->google_relay_requests) {
e0796db1df8a Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents: 30936
diff changeset
1715 PurpleUtilFetchUrlData *url_data =
e0796db1df8a Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents: 30936
diff changeset
1716 (PurpleUtilFetchUrlData *) js->google_relay_requests->data;
e0796db1df8a Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents: 30936
diff changeset
1717 purple_util_fetch_url_cancel(url_data);
e0796db1df8a Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents: 30936
diff changeset
1718 g_free(url_data);
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
1719 js->google_relay_requests =
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
1720 g_list_delete_link(js->google_relay_requests,
30939
e0796db1df8a Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents: 30936
diff changeset
1721 js->google_relay_requests);
e0796db1df8a Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents: 30936
diff changeset
1722 }
30926
196e4c5b2043 Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents: 28447
diff changeset
1723 }
196e4c5b2043 Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents: 28447
diff changeset
1724
23644
fa8567fa0ca0 Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23643
diff changeset
1725 g_free(js);
fa8567fa0ca0 Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23643
diff changeset
1726
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
1727 purple_connection_set_protocol_data(gc, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1728 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1729
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1730 void jabber_stream_set_state(JabberStream *js, JabberStreamState state)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1731 {
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
1732 #define JABBER_CONNECT_STEPS ((js->gsc || js->state == JABBER_STREAM_INITIALIZING_ENCRYPTION) ? 9 : 5)
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
1733
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1734 js->state = state;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1735 switch(state) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1736 case JABBER_STREAM_OFFLINE:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1737 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1738 case JABBER_STREAM_CONNECTING:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1739 purple_connection_update_progress(js->gc, _("Connecting"), 1,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1740 JABBER_CONNECT_STEPS);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1741 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1742 case JABBER_STREAM_INITIALIZING:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1743 purple_connection_update_progress(js->gc, _("Initializing Stream"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1744 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1745 jabber_stream_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1746 break;
17606
108f3b42976f 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 <pidgin@monitzer.com>
parents: 17603
diff changeset
1747 case JABBER_STREAM_INITIALIZING_ENCRYPTION:
108f3b42976f 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 <pidgin@monitzer.com>
parents: 17603
diff changeset
1748 purple_connection_update_progress(js->gc, _("Initializing SSL/TLS"),
108f3b42976f 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 <pidgin@monitzer.com>
parents: 17603
diff changeset
1749 6, JABBER_CONNECT_STEPS);
108f3b42976f 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 <pidgin@monitzer.com>
parents: 17603
diff changeset
1750 break;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1751 case JABBER_STREAM_AUTHENTICATING:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1752 purple_connection_update_progress(js->gc, _("Authenticating"),
17606
108f3b42976f 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 <pidgin@monitzer.com>
parents: 17603
diff changeset
1753 js->gsc ? 7 : 3, JABBER_CONNECT_STEPS);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1754 break;
28447
b357216b7b79 jabber: Fix using BOSH and legacy auth together. Closes #9990.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
1755 case JABBER_STREAM_POST_AUTH:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1756 purple_connection_update_progress(js->gc, _("Re-initializing Stream"),
17606
108f3b42976f 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 <pidgin@monitzer.com>
parents: 17603
diff changeset
1757 (js->gsc ? 8 : 4), JABBER_CONNECT_STEPS);
16822
a77901ef0ebb 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: 16728
diff changeset
1758
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1759 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1760 case JABBER_STREAM_CONNECTED:
27571
c8390dc125c1 Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents: 27096
diff changeset
1761 /* Send initial presence */
c8390dc125c1 Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents: 27096
diff changeset
1762 jabber_presence_send(js, TRUE);
30184
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
1763 /* Start up the inactivity timer */
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
1764 jabber_stream_restart_inactivity_timer(js);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
1765
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1766 purple_connection_set_state(js->gc, PURPLE_CONNECTED);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1767 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1768 }
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
1769
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
1770 #undef JABBER_CONNECT_STEPS
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1771 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1772
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1773 char *jabber_get_next_id(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1774 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1775 return g_strdup_printf("purple%x", js->next_id++);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1776 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1777
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1778
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
1779 void jabber_idle_set(PurpleConnection *gc, int idle)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1780 {
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
1781 JabberStream *js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1782
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1783 js->idle = idle ? time(NULL) - idle : idle;
26787
fef989505ea2 propagate from branch 'im.pidgin.pidgin' (head 7281ad5ba8e68debd285e06dafebd991e980f3da)
Paul Aurich <paul@darkrain42.org>
parents: 26780 26781
diff changeset
1784
25791
e9b7e41dc816 A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <ml@update.uu.se>
parents: 24155
diff changeset
1785 /* send out an updated prescence */
e9b7e41dc816 A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <ml@update.uu.se>
parents: 24155
diff changeset
1786 purple_debug_info("jabber", "sending updated presence for idle\n");
26818
a0e48796defb Fix merging.
Paul Aurich <paul@darkrain42.org>
parents: 26817
diff changeset
1787 jabber_presence_send(js, FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1788 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1789
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1790 void jabber_blocklist_parse_push(JabberStream *js, const char *from,
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1791 JabberIqType type, const char *id,
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1792 xmlnode *child)
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1793 {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1794 JabberIq *result;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1795 xmlnode *item;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1796 PurpleAccount *account;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1797 gboolean is_block;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1798
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1799 if (!jabber_is_own_account(js, from)) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1800 xmlnode *error, *x;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1801 result = jabber_iq_new(js, JABBER_IQ_ERROR);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1802 xmlnode_set_attrib(result->node, "id", id);
27040
c41698323c2f 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 <paul@darkrain42.org>
parents: 27039
diff changeset
1803 if (from)
c41698323c2f 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 <paul@darkrain42.org>
parents: 27039
diff changeset
1804 xmlnode_set_attrib(result->node, "to", from);
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1805
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1806 error = xmlnode_new_child(result->node, "error");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1807 xmlnode_set_attrib(error, "type", "cancel");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1808 x = xmlnode_new_child(error, "not-allowed");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1809 xmlnode_set_namespace(x, NS_XMPP_STANZAS);
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1810
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1811 jabber_iq_send(result);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1812 return;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1813 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1814
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1815 account = purple_connection_get_account(js->gc);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1816 is_block = g_str_equal(child->name, "block");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1817
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1818 item = xmlnode_get_child(child, "item");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1819 if (!is_block && item == NULL) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1820 /* Unblock everyone */
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1821 purple_debug_info("jabber", "Received unblock push. Unblocking everyone.\n");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1822
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1823 while (account->deny != NULL) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1824 purple_privacy_deny_remove(account, account->deny->data, TRUE);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1825 }
27039
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1826 } else if (item == NULL) {
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1827 /* An empty <block/> is bogus */
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1828 xmlnode *error, *x;
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1829 result = jabber_iq_new(js, JABBER_IQ_ERROR);
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1830 xmlnode_set_attrib(result->node, "id", id);
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1831
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1832 error = xmlnode_new_child(result->node, "error");
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1833 xmlnode_set_attrib(error, "type", "modify");
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1834 x = xmlnode_new_child(error, "bad-request");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1835 xmlnode_set_namespace(x, NS_XMPP_STANZAS);
27039
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1836
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1837 jabber_iq_send(result);
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1838 return;
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1839 } else {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1840 for ( ; item; item = xmlnode_get_next_twin(item)) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1841 const char *jid = xmlnode_get_attrib(item, "jid");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1842 if (jid == NULL || *jid == '\0')
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1843 continue;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1844
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1845 if (is_block)
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1846 purple_privacy_deny_add(account, jid, TRUE);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1847 else
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1848 purple_privacy_deny_remove(account, jid, TRUE);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1849 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1850 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1851
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1852 result = jabber_iq_new(js, JABBER_IQ_RESULT);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1853 xmlnode_set_attrib(result->node, "id", id);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1854 jabber_iq_send(result);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1855 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1856
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1857 static void jabber_blocklist_parse(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1858 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1859 xmlnode *packet, gpointer data)
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1860 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1861 xmlnode *blocklist, *item;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1862 PurpleAccount *account;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1863
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1864 blocklist = xmlnode_get_child_with_namespace(packet,
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1865 "blocklist", NS_SIMPLE_BLOCKING);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1866 account = purple_connection_get_account(js->gc);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1867
27034
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1868 if (type == JABBER_IQ_ERROR || blocklist == NULL)
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1869 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1870
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1871 /* This is the only privacy method supported by XEP-0191 */
32707
f75041cb3fec Convert libpurple and protocol prpl's to use the purple_account_* accessor functions.
andrew.victor@mxit.com
parents: 32700
diff changeset
1872 purple_account_set_privacy_type(account, PURPLE_PRIVACY_DENY_USERS);
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1873
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1874 /*
27034
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1875 * TODO: When account->deny is something more than a hash table, this can
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1876 * be re-written to find the set intersection and difference.
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1877 */
27034
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1878 while (account->deny)
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1879 purple_privacy_deny_remove(account, account->deny->data, TRUE);
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1880
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1881 item = xmlnode_get_child(blocklist, "item");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1882 while (item != NULL) {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1883 const char *jid = xmlnode_get_attrib(item, "jid");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1884 purple_privacy_deny_add(account, jid, TRUE);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1885 item = xmlnode_get_next_twin(item);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1886 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1887 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1888
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1889 void jabber_request_block_list(JabberStream *js)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1890 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1891 JabberIq *iq;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1892 xmlnode *blocklist;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1893
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1894 iq = jabber_iq_new(js, JABBER_IQ_GET);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1895
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1896 blocklist = xmlnode_new_child(iq->node, "blocklist");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1897 xmlnode_set_namespace(blocklist, NS_SIMPLE_BLOCKING);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1898
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1899 jabber_iq_set_callback(iq, jabber_blocklist_parse, NULL);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1900
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1901 jabber_iq_send(iq);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1902 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1903
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1904 void jabber_add_deny(PurpleConnection *gc, const char *who)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1905 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1906 JabberStream *js;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1907 JabberIq *iq;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1908 xmlnode *block, *item;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1909
29140
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1910 g_return_if_fail(who != NULL && *who != '\0');
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1911
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1912 js = purple_connection_get_protocol_data(gc);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1913 if (js == NULL)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1914 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1915
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1916 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1917 {
29140
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1918 jabber_google_roster_add_deny(js, who);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1919 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1920 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1921
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1922 if (!(js->server_caps & JABBER_CAP_BLOCKING))
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1923 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1924 purple_notify_error(NULL, _("Server doesn't support blocking"),
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1925 _("Server doesn't support blocking"), NULL);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1926 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1927 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1928
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1929 iq = jabber_iq_new(js, JABBER_IQ_SET);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1930
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1931 block = xmlnode_new_child(iq->node, "block");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1932 xmlnode_set_namespace(block, NS_SIMPLE_BLOCKING);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1933
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1934 item = xmlnode_new_child(block, "item");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1935 xmlnode_set_attrib(item, "jid", who);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1936
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1937 jabber_iq_send(iq);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1938 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1939
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1940 void jabber_rem_deny(PurpleConnection *gc, const char *who)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1941 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1942 JabberStream *js;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1943 JabberIq *iq;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1944 xmlnode *unblock, *item;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1945
29140
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1946 g_return_if_fail(who != NULL && *who != '\0');
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1947
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1948 js = purple_connection_get_protocol_data(gc);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1949 if (js == NULL)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1950 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1951
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1952 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1953 {
29140
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1954 jabber_google_roster_rem_deny(js, who);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1955 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1956 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1957
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1958 if (!(js->server_caps & JABBER_CAP_BLOCKING))
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1959 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1960
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1961 iq = jabber_iq_new(js, JABBER_IQ_SET);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1962
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1963 unblock = xmlnode_new_child(iq->node, "unblock");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1964 xmlnode_set_namespace(unblock, NS_SIMPLE_BLOCKING);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1965
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1966 item = xmlnode_new_child(unblock, "item");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1967 xmlnode_set_attrib(item, "jid", who);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1968
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1969 jabber_iq_send(iq);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1970 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1971
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1972 void jabber_add_feature(const char *namespace, JabberFeatureEnabled cb) {
17576
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
1973 JabberFeature *feat;
20000
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1974
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1975 g_return_if_fail(namespace != NULL);
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1976
17576
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
1977 feat = g_new0(JabberFeature,1);
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1978 feat->namespace = g_strdup(namespace);
17576
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
1979 feat->is_enabled = cb;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1980
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1981 /* try to remove just in case it already exists in the list */
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1982 jabber_remove_feature(namespace);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1983
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1984 jabber_features = g_list_append(jabber_features, feat);
17563
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17562
diff changeset
1985 }
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17562
diff changeset
1986
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1987 void jabber_remove_feature(const char *namespace) {
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1988 GList *feature;
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1989 for(feature = jabber_features; feature; feature = feature->next) {
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1990 JabberFeature *feat = (JabberFeature*)feature->data;
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1991 if(!strcmp(feat->namespace, namespace)) {
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1992 g_free(feat->namespace);
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1993 g_free(feature->data);
21538
4e5bef6c3379 Fix #3669
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21418
diff changeset
1994 jabber_features = g_list_delete_link(jabber_features, feature);
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1995 break;
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1996 }
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1997 }
17563
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17562
diff changeset
1998 }
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17562
diff changeset
1999
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2000 static void jabber_features_destroy(void)
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2001 {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2002 while (jabber_features) {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2003 JabberFeature *feature = jabber_features->data;
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2004 g_free(feature->namespace);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2005 g_free(feature);
28811
c3be1de8abde jabber: Oops. --leaks.
Paul Aurich <paul@darkrain42.org>
parents: 28793
diff changeset
2006 jabber_features = g_list_delete_link(jabber_features, jabber_features);
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2007 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2008 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2009
30688
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2010 gint
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2011 jabber_identity_compare(gconstpointer a, gconstpointer b)
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2012 {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2013 const JabberIdentity *ac;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2014 const JabberIdentity *bc;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2015 gint cat_cmp;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2016 gint typ_cmp;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2017
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2018 ac = a;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2019 bc = b;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2020
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2021 if ((cat_cmp = strcmp(ac->category, bc->category)) == 0) {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2022 if ((typ_cmp = strcmp(ac->type, bc->type)) == 0) {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2023 if (!ac->lang && !bc->lang) {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2024 return 0;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2025 } else if (ac->lang && !bc->lang) {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2026 return 1;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2027 } else if (!ac->lang && bc->lang) {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2028 return -1;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2029 } else {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2030 return strcmp(ac->lang, bc->lang);
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2031 }
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2032 } else {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2033 return typ_cmp;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2034 }
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2035 } else {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2036 return cat_cmp;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2037 }
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2038 }
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2039
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2040 void jabber_add_identity(const gchar *category, const gchar *type,
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2041 const gchar *lang, const gchar *name)
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2042 {
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2043 GList *identity;
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2044 JabberIdentity *ident;
30688
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2045
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2046 /* both required according to XEP-0030 */
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2047 g_return_if_fail(category != NULL);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2048 g_return_if_fail(type != NULL);
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2049
30688
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2050 /* Check if this identity is already there... */
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2051 for (identity = jabber_identities; identity; identity = identity->next) {
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2052 JabberIdentity *id = identity->data;
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2053 if (g_str_equal(id->category, category) &&
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2054 g_str_equal(id->type, type) &&
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2055 purple_strequal(id->lang, lang))
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
2056 return;
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2057 }
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
2058
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2059 ident = g_new0(JabberIdentity, 1);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2060 ident->category = g_strdup(category);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2061 ident->type = g_strdup(type);
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
2062 ident->lang = g_strdup(lang);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2063 ident->name = g_strdup(name);
30688
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2064 jabber_identities = g_list_insert_sorted(jabber_identities, ident,
116ca888e77d jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents: 30653
diff changeset
2065 jabber_identity_compare);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2066 }
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
2067
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2068 static void jabber_identities_destroy(void)
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2069 {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2070 while (jabber_identities) {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2071 JabberIdentity *id = jabber_identities->data;
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2072 g_free(id->category);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2073 g_free(id->type);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2074 g_free(id->lang);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2075 g_free(id->name);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2076 g_free(id);
28811
c3be1de8abde jabber: Oops. --leaks.
Paul Aurich <paul@darkrain42.org>
parents: 28793
diff changeset
2077 jabber_identities = g_list_delete_link(jabber_identities, jabber_identities);
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2078 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2079 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
2080
26354
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
2081 gboolean jabber_stream_is_ssl(JabberStream *js)
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
2082 {
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
2083 return (js->bosh && jabber_bosh_connection_is_ssl(js->bosh)) ||
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
2084 (!js->bosh && js->gsc);
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
2085 }
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
2086
30184
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2087 static gboolean
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2088 inactivity_cb(gpointer data)
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2089 {
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2090 JabberStream *js = data;
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2091
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2092 /* We want whatever is sent to set this. It's okay because
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2093 * the eventloop unsets it via the return FALSE.
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2094 */
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2095 js->inactivity_timer = 0;
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2096
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2097 if (js->bosh)
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2098 jabber_bosh_connection_send_keepalive(js->bosh);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2099 else
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2100 jabber_send_raw(js, "\t", 1);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2101
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2102 return FALSE;
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2103 }
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2104
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2105 void jabber_stream_restart_inactivity_timer(JabberStream *js)
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2106 {
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2107 if (js->inactivity_timer != 0) {
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2108 purple_timeout_remove(js->inactivity_timer);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2109 js->inactivity_timer = 0;
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2110 }
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2111
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2112 g_return_if_fail(js->max_inactivity > 0);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2113
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2114 js->inactivity_timer =
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2115 purple_timeout_add_seconds(js->max_inactivity,
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2116 inactivity_cb, js);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2117 }
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 30167
diff changeset
2118
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
2119 const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2120 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2121 return "jabber";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2122 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2123
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
2124 const char* jabber_list_emblem(PurpleBuddy *b)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2125 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2126 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2127 JabberBuddy *jb = NULL;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2128 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2129
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2130 if(!gc)
15498
0d4890637238 clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15463
diff changeset
2131 return NULL;
0d4890637238 clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15463
diff changeset
2132
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2133 js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2134 if(js)
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2135 jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2136
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2137 if(!PURPLE_BUDDY_IS_ONLINE(b)) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2138 if(jb && (jb->subscription & JABBER_SUB_PENDING ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2139 !(jb->subscription & JABBER_SUB_TO)))
15463
0b6f337a46d5 Emblems in the blist
Sean Egan <seanegan@gmail.com>
parents: 15374
diff changeset
2140 return "not-authorized";
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2141 }
27136
dd7e7071d46d Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <paul@darkrain42.org>
parents: 27135
diff changeset
2142
25836
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2143 if (jb) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2144 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, NULL);
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2145 if (jbr) {
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
2146 const gchar *client_type =
25836
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2147 jabber_resource_get_identity_category_type(jbr, "client");
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
2148
25836
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2149 if (client_type) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2150 if (strcmp(client_type, "phone") == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2151 return "mobile";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2152 } else if (strcmp(client_type, "web") == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2153 return "external";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2154 } else if (strcmp(client_type, "handheld") == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2155 return "hiptop";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2156 } else if (strcmp(client_type, "bot") == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2157 return "bot";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2158 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2159 /* the default value "pc" falls through and has no emblem */
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2160 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2161 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
2162 }
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
2163
15463
0b6f337a46d5 Emblems in the blist
Sean Egan <seanegan@gmail.com>
parents: 15374
diff changeset
2164 return NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2165 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2166
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
2167 char *jabber_status_text(PurpleBuddy *b)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2168 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2169 char *ret = NULL;
18237
2a5c5d675789 Fix a crash when you have an IM window open on a jabber account and the
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18163
diff changeset
2170 JabberBuddy *jb = NULL;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2171 PurpleAccount *account = purple_buddy_get_account(b);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2172 PurpleConnection *gc = purple_account_get_connection(account);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2173
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2174 if (gc && purple_connection_get_protocol_data(gc))
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2175 jb = jabber_buddy_find(purple_connection_get_protocol_data(gc), purple_buddy_get_name(b), FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2176
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2177 if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2178 ret = g_strdup(_("Not Authorized"));
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2179 } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2180 ret = g_strdup(jb->error_msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2181 } else {
26773
803e05b3a871 Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents: 26767
diff changeset
2182 PurplePresence *presence = purple_buddy_get_presence(b);
27563
7a2891487a00 Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27514
diff changeset
2183 PurpleStatus *status = purple_presence_get_active_status(presence);
27603
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2184 const char *message;
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2185
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2186 if((message = purple_status_get_attr_string(status, "message"))) {
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2187 ret = g_markup_escape_text(message, -1);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2188 } else if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2189 PurpleStatus *status = purple_presence_get_status(presence, "tune");
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2190 const char *title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2191 const char *artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2192 const char *album = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
2193 ret = purple_util_format_song_info(title, artist, album, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2194 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2195 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2196
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2197 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2198 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2199
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2200 static void
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2201 jabber_tooltip_add_resource_text(JabberBuddyResource *jbr,
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2202 PurpleNotifyUserInfo *user_info, gboolean multiple_resources)
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2203 {
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2204 char *text = NULL;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2205 char *res = NULL;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2206 char *label, *value;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2207 const char *state;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2208
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2209 if(jbr->status) {
27563
7a2891487a00 Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27514
diff changeset
2210 text = g_markup_escape_text(jbr->status, -1);
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2211 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2212
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2213 if(jbr->name)
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2214 res = g_strdup_printf(" (%s)", jbr->name);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2215
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2216 state = jabber_buddy_state_get_name(jbr->state);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2217 if (text != NULL && !purple_utf8_strcasecmp(state, text)) {
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2218 g_free(text);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2219 text = NULL;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2220 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2221
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2222 label = g_strdup_printf("%s%s", _("Status"), (res ? res : ""));
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2223 value = g_strdup_printf("%s%s%s", state, (text ? ": " : ""), (text ? text : ""));
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2224
32366
99ca503ea087 Rename purple_notify_user_info_add_pair to
Mark Doliner <mark@kingant.net>
parents: 32359
diff changeset
2225 purple_notify_user_info_add_pair_html(user_info, label, value);
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2226 g_free(label);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2227 g_free(value);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2228 g_free(text);
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2229
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2230 /* if the resource is idle, show that */
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2231 /* only show it if there is more than one resource available for
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2232 the buddy, since the "general" idleness will be shown anyway,
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2233 this way we can see see the idleness of lower-priority resources */
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2234 if (jbr->idle && multiple_resources) {
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2235 gchar *idle_str =
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2236 purple_str_seconds_to_string(time(NULL) - jbr->idle);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2237 label = g_strdup_printf("%s%s", _("Idle"), (res ? res : ""));
32359
dc3ea8f6381a Use purple_notify_user_info_add_pair_plaintext in some places where we
Mark Doliner <mark@kingant.net>
parents: 32330
diff changeset
2238 purple_notify_user_info_add_pair_plaintext(user_info, label, idle_str);
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2239 g_free(idle_str);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2240 g_free(label);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2241 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2242 g_free(res);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2243 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2244
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
2245 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2246 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2247 JabberBuddy *jb;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2248 PurpleAccount *account;
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2249 PurpleConnection *gc;
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2250 JabberStream *js;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2251
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2252 g_return_if_fail(b != NULL);
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2253
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2254 account = purple_buddy_get_account(b);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2255 g_return_if_fail(account != NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2256
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2257 gc = purple_account_get_connection(account);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2258 g_return_if_fail(gc != NULL);
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2259
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2260 js = purple_connection_get_protocol_data(gc);
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2261 g_return_if_fail(js != NULL);
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2262
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2263 jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2264
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2265 if(jb) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2266 JabberBuddyResource *jbr = NULL;
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2267 PurplePresence *presence = purple_buddy_get_presence(b);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2268 const char *sub;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2269 GList *l;
19722
eedf2918aace Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@gmail.com>
parents: 19696
diff changeset
2270 const char *mood;
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2271 gboolean multiple_resources =
25968
65f2c84f122f Only show idle time for idle resources in tooltip text when there is more than
Marcus Lundblad <ml@update.uu.se>
parents: 25963
diff changeset
2272 jb->resources && g_list_next(jb->resources);
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2273 JabberBuddyResource *top_jbr = jabber_buddy_find_resource(jb, NULL);
25974
8202f850ca9e Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents: 25973
diff changeset
2274
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2275 /* resource-specific info for the top resource */
25975
1ad482221d70 Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents: 25974
diff changeset
2276 if (top_jbr) {
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2277 jabber_tooltip_add_resource_text(top_jbr, user_info,
25975
1ad482221d70 Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents: 25974
diff changeset
2278 multiple_resources);
1ad482221d70 Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents: 25974
diff changeset
2279 }
25974
8202f850ca9e Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents: 25973
diff changeset
2280
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2281 for(l=jb->resources; l; l = l->next) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2282 jbr = l->data;
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2283 /* the remaining resources */
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2284 if (jbr != top_jbr) {
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2285 jabber_tooltip_add_resource_text(jbr, user_info,
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2286 multiple_resources);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2287 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2288 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2289
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2290 if (full) {
17573
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17572
diff changeset
2291 PurpleStatus *status;
23271
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2292
29834
1fb503adb2ae Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents: 29829
diff changeset
2293 status = purple_presence_get_status(presence, "mood");
1fb503adb2ae Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents: 29829
diff changeset
2294 mood = purple_status_get_attr_string(status, PURPLE_MOOD_NAME);
29827
37be968cd42c Check that mood is not the empty string, just to be safe.
Richard Laager <rlaager@wiktel.com>
parents: 29825
diff changeset
2295 if(mood && *mood) {
23271
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2296 const char *moodtext;
29862
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2297 /* find the mood */
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2298 PurpleMood *moods = jabber_get_moods(account);
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2299 const char *description = NULL;
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2300
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2301 for (; moods->mood ; moods++) {
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2302 if (purple_strequal(moods->mood, mood)) {
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2303 description = moods->description;
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2304 break;
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2305 }
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2306 }
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2307
29834
1fb503adb2ae Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents: 29829
diff changeset
2308 moodtext = purple_status_get_attr_string(status, PURPLE_MOOD_COMMENT);
29825
b0e7b4daf465 Do not show "Mood: mood ()" when there is no text.
Richard Laager <rlaager@wiktel.com>
parents: 24155
diff changeset
2309 if(moodtext && *moodtext) {
29862
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2310 char *moodplustext =
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2311 g_strdup_printf("%s (%s)", description ? _(description) : mood, moodtext);
23271
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2312
32366
99ca503ea087 Rename purple_notify_user_info_add_pair to
Mark Doliner <mark@kingant.net>
parents: 32359
diff changeset
2313 purple_notify_user_info_add_pair_html(user_info, _("Mood"), moodplustext);
17573
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17572
diff changeset
2314 g_free(moodplustext);
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17572
diff changeset
2315 } else
32366
99ca503ea087 Rename purple_notify_user_info_add_pair to
Mark Doliner <mark@kingant.net>
parents: 32359
diff changeset
2316 purple_notify_user_info_add_pair_html(user_info, _("Mood"),
29862
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29857
diff changeset
2317 description ? _(description) : mood);
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2318 }
22000
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2319 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2320 PurpleStatus *tune = purple_presence_get_status(presence, "tune");
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2321 const char *title = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE);
22000
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2322 const char *artist = purple_status_get_attr_string(tune, PURPLE_TUNE_ARTIST);
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2323 const char *album = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM);
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2324 char *playing = purple_util_format_song_info(title, artist, album, NULL);
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2325 if (playing) {
32366
99ca503ea087 Rename purple_notify_user_info_add_pair to
Mark Doliner <mark@kingant.net>
parents: 32359
diff changeset
2326 purple_notify_user_info_add_pair_html(user_info, _("Now Listening"), playing);
22000
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2327 g_free(playing);
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2328 }
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2329 }
25969
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2330
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2331 if(jb->subscription & JABBER_SUB_FROM) {
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2332 if(jb->subscription & JABBER_SUB_TO)
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2333 sub = _("Both");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2334 else if(jb->subscription & JABBER_SUB_PENDING)
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2335 sub = _("From (To pending)");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2336 else
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2337 sub = _("From");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2338 } else {
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2339 if(jb->subscription & JABBER_SUB_TO)
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2340 sub = _("To");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2341 else if(jb->subscription & JABBER_SUB_PENDING)
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2342 sub = _("None (To pending)");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2343 else
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2344 sub = _("None");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2345 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2346
32366
99ca503ea087 Rename purple_notify_user_info_add_pair to
Mark Doliner <mark@kingant.net>
parents: 32359
diff changeset
2347 purple_notify_user_info_add_pair_html(user_info, _("Subscription"), sub);
25969
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2348
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2349 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2350
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2351 if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
32366
99ca503ea087 Rename purple_notify_user_info_add_pair to
Mark Doliner <mark@kingant.net>
parents: 32359
diff changeset
2352 purple_notify_user_info_add_pair_html(user_info, _("Error"), jb->error_msg);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2353 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2354 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2355 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2356
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
2357 GList *jabber_status_types(PurpleAccount *account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2358 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2359 PurpleStatusType *type;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2360 GList *types = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2361 PurpleValue *priority_value;
24122
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2362 PurpleValue *buzz_enabled;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2363
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2364 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2365 purple_value_set_int(priority_value, 1);
24122
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2366 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2367 purple_value_set_boolean(buzz_enabled, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2368 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2369 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_ONLINE),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2370 NULL, TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2371 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2372 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2373 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2374 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2375 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
24122
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2376 "buzz", _("Allow Buzz"), buzz_enabled,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2377 NULL);
29829
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29827
diff changeset
2378 types = g_list_prepend(types, type);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2379
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
2380
29857
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29852
diff changeset
2381 type = purple_status_type_new_with_attrs(PURPLE_STATUS_MOOD,
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29852
diff changeset
2382 "mood", NULL, TRUE, TRUE, TRUE,
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29852
diff changeset
2383 PURPLE_MOOD_NAME, _("Mood Name"), purple_value_new(PURPLE_TYPE_STRING),
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29852
diff changeset
2384 PURPLE_MOOD_COMMENT, _("Mood Comment"), purple_value_new(PURPLE_TYPE_STRING),
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29852
diff changeset
2385 NULL);
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29852
diff changeset
2386 types = g_list_prepend(types, type);
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29852
diff changeset
2387
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2388 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2389 purple_value_set_int(priority_value, 1);
24707
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2390 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2391 purple_value_set_boolean(buzz_enabled, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2392 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2393 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_CHAT),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2394 _("Chatty"), TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2395 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2396 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2397 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2398 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2399 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
24122
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2400 "buzz", _("Allow Buzz"), buzz_enabled,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2401 NULL);
29829
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29827
diff changeset
2402 types = g_list_prepend(types, type);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2403
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2404 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2405 purple_value_set_int(priority_value, 0);
24707
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2406 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2407 purple_value_set_boolean(buzz_enabled, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2408 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2409 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_AWAY),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2410 NULL, TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2411 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2412 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2413 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2414 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2415 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2416 "buzz", _("Allow Buzz"), buzz_enabled,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2417 NULL);
29829
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29827
diff changeset
2418 types = g_list_prepend(types, type);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2419
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2420 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2421 purple_value_set_int(priority_value, 0);
24707
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2422 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2423 purple_value_set_boolean(buzz_enabled, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2424 type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2425 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_XA),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2426 NULL, TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2427 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2428 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2429 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2430 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2431 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2432 "buzz", _("Allow Buzz"), buzz_enabled,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2433 NULL);
29829
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29827
diff changeset
2434 types = g_list_prepend(types, type);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2435
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2436 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2437 purple_value_set_int(priority_value, 0);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2438 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2439 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_DND),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2440 _("Do Not Disturb"), TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2441 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2442 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2443 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2444 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2445 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2446 NULL);
29829
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29827
diff changeset
2447 types = g_list_prepend(types, type);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2448
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2449 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2450 if(js->protocol_version == JABBER_PROTO_0_9)
29829
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29827
diff changeset
2451 "Invisible"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2452 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2453
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2454 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2455 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_UNAVAILABLE),
25050
b5c82724598c For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24858
diff changeset
2456 NULL, TRUE, TRUE, FALSE,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2457 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2458 NULL);
29829
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29827
diff changeset
2459 types = g_list_prepend(types, type);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2460
20570
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2461 type = purple_status_type_new_with_attrs(PURPLE_STATUS_TUNE,
24409
3a3d36791a47 I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents: 24155
diff changeset
2462 "tune", NULL, FALSE, TRUE, TRUE,
20570
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2463 PURPLE_TUNE_ARTIST, _("Tune Artist"), purple_value_new(PURPLE_TYPE_STRING),
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2464 PURPLE_TUNE_TITLE, _("Tune Title"), purple_value_new(PURPLE_TYPE_STRING),
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2465 PURPLE_TUNE_ALBUM, _("Tune Album"), purple_value_new(PURPLE_TYPE_STRING),
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2466 PURPLE_TUNE_GENRE, _("Tune Genre"), purple_value_new(PURPLE_TYPE_STRING),
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2467 PURPLE_TUNE_COMMENT, _("Tune Comment"), purple_value_new(PURPLE_TYPE_STRING),
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2468 PURPLE_TUNE_TRACK, _("Tune Track"), purple_value_new(PURPLE_TYPE_STRING),
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2469 PURPLE_TUNE_TIME, _("Tune Time"), purple_value_new(PURPLE_TYPE_INT),
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2470 PURPLE_TUNE_YEAR, _("Tune Year"), purple_value_new(PURPLE_TYPE_INT),
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2471 PURPLE_TUNE_URL, _("Tune URL"), purple_value_new(PURPLE_TYPE_STRING),
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2472 NULL);
29829
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29827
diff changeset
2473 types = g_list_prepend(types, type);
20570
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2474
29829
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29827
diff changeset
2475 return g_list_reverse(types);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2476 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2477
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2478 static void
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
2479 jabber_password_change_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
2480 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
2481 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2482 {
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
2483 if (type == JABBER_IQ_RESULT) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2484 purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2485 _("Your password has been changed."));
21058
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2486
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
2487 purple_account_set_password(purple_connection_get_account(js->gc), (char *)data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2488 } else {
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2489 char *msg = jabber_parse_error(js, packet, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2490
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2491 purple_notify_error(js->gc, _("Error changing password"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2492 _("Error changing password"), msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2493 g_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2494 }
21058
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2495
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2496 g_free(data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2497 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2498
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2499 static void jabber_password_change_cb(JabberStream *js,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2500 PurpleRequestFields *fields)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2501 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2502 const char *p1, *p2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2503 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2504 xmlnode *query, *y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2505
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2506 p1 = purple_request_fields_get_string(fields, "password1");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2507 p2 = purple_request_fields_get_string(fields, "password2");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2508
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2509 if(strcmp(p1, p2)) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2510 purple_notify_error(js->gc, NULL, _("New passwords do not match."), NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2511 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2512 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2513
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2514 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2515
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2516 xmlnode_set_attrib(iq->node, "to", js->user->domain);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2517
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2518 query = xmlnode_get_child(iq->node, "query");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2519
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2520 y = xmlnode_new_child(query, "username");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2521 xmlnode_insert_data(y, js->user->node, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2522 y = xmlnode_new_child(query, "password");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2523 xmlnode_insert_data(y, p1, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2524
21058
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2525 jabber_iq_set_callback(iq, jabber_password_change_result_cb, g_strdup(p1));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2526
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2527 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2528 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2529
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2530 static void jabber_password_change(PurplePluginAction *action)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2531 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2532
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2533 PurpleConnection *gc = (PurpleConnection *) action->context;
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2534 JabberStream *js = purple_connection_get_protocol_data(gc);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2535 PurpleRequestFields *fields;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2536 PurpleRequestFieldGroup *group;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2537 PurpleRequestField *field;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2538
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2539 fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2540 group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2541 purple_request_fields_add_group(fields, group);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2542
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2543 field = purple_request_field_string_new("password1", _("Password"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2544 "", FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2545 purple_request_field_string_set_masked(field, TRUE);
18323
e3df2f61d03d Make password fileds in Jabber's Change Password dialog required. Fixes #1907
Sean Egan <seanegan@gmail.com>
parents: 18237
diff changeset
2546 purple_request_field_set_required(field, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2547 purple_request_field_group_add_field(group, field);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2548
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2549 field = purple_request_field_string_new("password2", _("Password (again)"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2550 "", FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2551 purple_request_field_string_set_masked(field, TRUE);
18323
e3df2f61d03d Make password fileds in Jabber's Change Password dialog required. Fixes #1907
Sean Egan <seanegan@gmail.com>
parents: 18237
diff changeset
2552 purple_request_field_set_required(field, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2553 purple_request_field_group_add_field(group, field);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2554
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2555 purple_request_fields(js->gc, _("Change XMPP Password"),
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16822
diff changeset
2556 _("Change XMPP Password"), _("Please enter your new password"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2557 fields, _("OK"), G_CALLBACK(jabber_password_change_cb),
16442
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16240
diff changeset
2558 _("Cancel"), NULL,
19999
da29f5c7dc1a 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 <daniel.atallah@gmail.com>
parents: 19722
diff changeset
2559 purple_connection_get_account(gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2560 js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2561 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2562
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
2563 GList *jabber_actions(PurplePlugin *plugin, gpointer context)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2564 {
17575
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17573
diff changeset
2565 PurpleConnection *gc = (PurpleConnection *) context;
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2566 JabberStream *js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2567 GList *m = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2568 PurplePluginAction *act;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2569
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2570 act = purple_plugin_action_new(_("Set User Info..."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2571 jabber_setup_set_info);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2572 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2573
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2574 /* if (js->protocol_options & CHANGE_PASSWORD) { */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2575 act = purple_plugin_action_new(_("Change Password..."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2576 jabber_password_change);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2577 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2578 /* } */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2579
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2580 act = purple_plugin_action_new(_("Search for Users..."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2581 jabber_user_search_begin);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2582 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2583
17576
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
2584 purple_debug_info("jabber", "jabber_actions: have pep: %s\n", js->pep?"YES":"NO");
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
2585
17575
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17573
diff changeset
2586 if(js->pep)
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17573
diff changeset
2587 jabber_pep_init_actions(&m);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2588
17610
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
2589 if(js->commands)
9a19c46adf66 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 <pidgin@monitzer.com>
parents: 17608
diff changeset
2590 jabber_adhoc_init_server_commands(js, &m);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2591
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2592 return m;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2593 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2594
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
2595 PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2596 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2597 PurpleBlistNode *gnode, *cnode;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2598 JabberID *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2599
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2600 if(!(jid = jabber_id_new(name)))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2601 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2602
25289
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2603 for(gnode = purple_blist_get_root(); gnode;
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2604 gnode = purple_blist_node_get_sibling_next(gnode)) {
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2605 for(cnode = purple_blist_node_get_first_child(gnode);
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2606 cnode;
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2607 cnode = purple_blist_node_get_sibling_next(cnode)) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2608 PurpleChat *chat = (PurpleChat*)cnode;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2609 const char *room, *server;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2610 GHashTable *components;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2611 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2612 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2613
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2614 if (purple_chat_get_account(chat) != account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2615 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2616
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2617 components = purple_chat_get_components(chat);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2618 if(!(room = g_hash_table_lookup(components, "room")))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2619 continue;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2620 if(!(server = g_hash_table_lookup(components, "server")))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2621 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2622
31678
05c45d8f2ce3 jabber: Use a straight equality check instead of collate
Paul Aurich <paul@darkrain42.org>
parents: 31534
diff changeset
2623 /* FIXME: Collate is wrong in a few cases here; this should be prepped */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2624 if(jid->node && jid->domain &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2625 !g_utf8_collate(room, jid->node) && !g_utf8_collate(server, jid->domain)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2626 jabber_id_free(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2627 return chat;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2628 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2629 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2630 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2631 jabber_id_free(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2632 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2633 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2634
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
2635 void jabber_convo_closed(PurpleConnection *gc, const char *who)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2636 {
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
2637 JabberStream *js = purple_connection_get_protocol_data(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2638 JabberID *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2639 JabberBuddy *jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2640 JabberBuddyResource *jbr;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2641
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2642 if(!(jid = jabber_id_new(who)))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2643 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2644
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2645 if((jb = jabber_buddy_find(js, who, TRUE)) &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2646 (jbr = jabber_buddy_find_resource(jb, jid->resource))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2647 if(jbr->thread_id) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2648 g_free(jbr->thread_id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2649 jbr->thread_id = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2650 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2651 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2652
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2653 jabber_id_free(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2654 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2655
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2656
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2657 char *jabber_parse_error(JabberStream *js,
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2658 xmlnode *packet,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
2659 PurpleConnectionError *reason)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2660 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2661 xmlnode *error;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2662 const char *code = NULL, *text = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2663 const char *xmlns = xmlnode_get_namespace(packet);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2664 char *cdata = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2665
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2666 #define SET_REASON(x) \
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2667 if(reason != NULL) { *reason = x; }
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2668
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2669 if((error = xmlnode_get_child(packet, "error"))) {
31009
4f6273c899b9 jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents: 30969
diff changeset
2670 xmlnode *t = xmlnode_get_child_with_namespace(error, "text", NS_XMPP_STANZAS);
4f6273c899b9 jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents: 30969
diff changeset
2671 if (t)
4f6273c899b9 jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents: 30969
diff changeset
2672 cdata = xmlnode_get_data(t);
4f6273c899b9 jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents: 30969
diff changeset
2673 #if 0
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2674 cdata = xmlnode_get_data(error);
31009
4f6273c899b9 jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents: 30969
diff changeset
2675 #endif
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2676 code = xmlnode_get_attrib(error, "code");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2677
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2678 /* Stanza errors */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2679 if(xmlnode_get_child(error, "bad-request")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2680 text = _("Bad Request");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2681 } else if(xmlnode_get_child(error, "conflict")) {
31009
4f6273c899b9 jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents: 30969
diff changeset
2682 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2683 text = _("Conflict");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2684 } else if(xmlnode_get_child(error, "feature-not-implemented")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2685 text = _("Feature Not Implemented");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2686 } else if(xmlnode_get_child(error, "forbidden")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2687 text = _("Forbidden");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2688 } else if(xmlnode_get_child(error, "gone")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2689 text = _("Gone");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2690 } else if(xmlnode_get_child(error, "internal-server-error")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2691 text = _("Internal Server Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2692 } else if(xmlnode_get_child(error, "item-not-found")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2693 text = _("Item Not Found");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2694 } else if(xmlnode_get_child(error, "jid-malformed")) {
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16822
diff changeset
2695 text = _("Malformed XMPP ID");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2696 } else if(xmlnode_get_child(error, "not-acceptable")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2697 text = _("Not Acceptable");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2698 } else if(xmlnode_get_child(error, "not-allowed")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2699 text = _("Not Allowed");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2700 } else if(xmlnode_get_child(error, "not-authorized")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2701 text = _("Not Authorized");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2702 } else if(xmlnode_get_child(error, "payment-required")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2703 text = _("Payment Required");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2704 } else if(xmlnode_get_child(error, "recipient-unavailable")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2705 text = _("Recipient Unavailable");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2706 } else if(xmlnode_get_child(error, "redirect")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2707 /* XXX */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2708 } else if(xmlnode_get_child(error, "registration-required")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2709 text = _("Registration Required");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2710 } else if(xmlnode_get_child(error, "remote-server-not-found")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2711 text = _("Remote Server Not Found");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2712 } else if(xmlnode_get_child(error, "remote-server-timeout")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2713 text = _("Remote Server Timeout");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2714 } else if(xmlnode_get_child(error, "resource-constraint")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2715 text = _("Server Overloaded");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2716 } else if(xmlnode_get_child(error, "service-unavailable")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2717 text = _("Service Unavailable");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2718 } else if(xmlnode_get_child(error, "subscription-required")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2719 text = _("Subscription Required");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2720 } else if(xmlnode_get_child(error, "unexpected-request")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2721 text = _("Unexpected Request");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2722 } else if(xmlnode_get_child(error, "undefined-condition")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2723 text = _("Unknown Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2724 }
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
2725 } else if(xmlns && !strcmp(xmlns, NS_XMPP_SASL)) {
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2726 /* Most common reason can be the default */
21363
b4833db5eed0 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <will.thompson@collabora.co.uk>
parents: 21360
diff changeset
2727 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2728 if(xmlnode_get_child(packet, "aborted")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2729 text = _("Authorization Aborted");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2730 } else if(xmlnode_get_child(packet, "incorrect-encoding")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2731 text = _("Incorrect encoding in authorization");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2732 } else if(xmlnode_get_child(packet, "invalid-authzid")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2733 text = _("Invalid authzid");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2734 } else if(xmlnode_get_child(packet, "invalid-mechanism")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2735 text = _("Invalid Authorization Mechanism");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2736 } else if(xmlnode_get_child(packet, "mechanism-too-weak")) {
21363
b4833db5eed0 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <will.thompson@collabora.co.uk>
parents: 21360
diff changeset
2737 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2738 text = _("Authorization mechanism too weak");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2739 } else if(xmlnode_get_child(packet, "not-authorized")) {
21363
b4833db5eed0 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <will.thompson@collabora.co.uk>
parents: 21360
diff changeset
2740 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
19999
da29f5c7dc1a 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 <daniel.atallah@gmail.com>
parents: 19722
diff changeset
2741 /* Clear the pasword if it isn't being saved */
32767
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
2742 if (!purple_account_get_remember_password(purple_connection_get_account(js->gc)))
2ec94166be43 On the way to hiding the PurpleConnection struct.
andrew.victor@mxit.com
parents: 32708
diff changeset
2743 purple_account_set_password(purple_connection_get_account(js->gc), NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2744 text = _("Not Authorized");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2745 } else if(xmlnode_get_child(packet, "temporary-auth-failure")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2746 text = _("Temporary Authentication Failure");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2747 } else {
21363
b4833db5eed0 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <will.thompson@collabora.co.uk>
parents: 21360
diff changeset
2748 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2749 text = _("Authentication Failure");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2750 }
15918
4be5d38ee117 Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <mark@kingant.net>
parents: 15916
diff changeset
2751 } else if(!strcmp(packet->name, "stream:error") ||
20851
4888d00c50f0 Make sure that the xmlns isn't null before dereferencing it to fix CID 320.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20740
diff changeset
2752 (!strcmp(packet->name, "error") && xmlns &&
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
2753 !strcmp(xmlns, NS_XMPP_STREAMS))) {
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2754 /* Most common reason as default: */
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
2755 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2756 if(xmlnode_get_child(packet, "bad-format")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2757 text = _("Bad Format");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2758 } else if(xmlnode_get_child(packet, "bad-namespace-prefix")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2759 text = _("Bad Namespace Prefix");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2760 } else if(xmlnode_get_child(packet, "conflict")) {
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
2761 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2762 text = _("Resource Conflict");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2763 } else if(xmlnode_get_child(packet, "connection-timeout")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2764 text = _("Connection Timeout");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2765 } else if(xmlnode_get_child(packet, "host-gone")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2766 text = _("Host Gone");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2767 } else if(xmlnode_get_child(packet, "host-unknown")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2768 text = _("Host Unknown");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2769 } else if(xmlnode_get_child(packet, "improper-addressing")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2770 text = _("Improper Addressing");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2771 } else if(xmlnode_get_child(packet, "internal-server-error")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2772 text = _("Internal Server Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2773 } else if(xmlnode_get_child(packet, "invalid-id")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2774 text = _("Invalid ID");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2775 } else if(xmlnode_get_child(packet, "invalid-namespace")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2776 text = _("Invalid Namespace");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2777 } else if(xmlnode_get_child(packet, "invalid-xml")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2778 text = _("Invalid XML");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2779 } else if(xmlnode_get_child(packet, "nonmatching-hosts")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2780 text = _("Non-matching Hosts");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2781 } else if(xmlnode_get_child(packet, "not-authorized")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2782 text = _("Not Authorized");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2783 } else if(xmlnode_get_child(packet, "policy-violation")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2784 text = _("Policy Violation");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2785 } else if(xmlnode_get_child(packet, "remote-connection-failed")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2786 text = _("Remote Connection Failed");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2787 } else if(xmlnode_get_child(packet, "resource-constraint")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2788 text = _("Resource Constraint");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2789 } else if(xmlnode_get_child(packet, "restricted-xml")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2790 text = _("Restricted XML");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2791 } else if(xmlnode_get_child(packet, "see-other-host")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2792 text = _("See Other Host");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2793 } else if(xmlnode_get_child(packet, "system-shutdown")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2794 text = _("System Shutdown");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2795 } else if(xmlnode_get_child(packet, "undefined-condition")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2796 text = _("Undefined Condition");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2797 } else if(xmlnode_get_child(packet, "unsupported-encoding")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2798 text = _("Unsupported Encoding");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2799 } else if(xmlnode_get_child(packet, "unsupported-stanza-type")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2800 text = _("Unsupported Stanza Type");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2801 } else if(xmlnode_get_child(packet, "unsupported-version")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2802 text = _("Unsupported Version");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2803 } else if(xmlnode_get_child(packet, "xml-not-well-formed")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2804 text = _("XML Not Well Formed");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2805 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2806 text = _("Stream Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2807 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2808 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2809
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2810 #undef SET_REASON
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2811
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2812 if(text || cdata) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2813 char *ret = g_strdup_printf("%s%s%s", code ? code : "",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2814 code ? ": " : "", text ? text : cdata);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2815 g_free(cdata);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2816 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2817 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2818 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2819 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2820 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2821
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2822 static PurpleCmdRet jabber_cmd_chat_config(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2823 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2824 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2825 JabberChat *chat = jabber_chat_find_by_conv(conv);
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2826
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2827 if (!chat)
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2828 return PURPLE_CMD_RET_FAILED;
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2829
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2830 jabber_chat_request_room_configure(chat);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2831 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2832 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2833
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2834 static PurpleCmdRet jabber_cmd_chat_register(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2835 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2836 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2837 JabberChat *chat = jabber_chat_find_by_conv(conv);
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2838
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2839 if (!chat)
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2840 return PURPLE_CMD_RET_FAILED;
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2841
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2842 jabber_chat_register(chat);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2843 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2844 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2845
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2846 static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2847 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2848 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2849 JabberChat *chat = jabber_chat_find_by_conv(conv);
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2850
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2851 if (!chat)
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2852 return PURPLE_CMD_RET_FAILED;
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2853
26766
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2854 if (args && args[0] && *args[0])
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2855 jabber_chat_change_topic(chat, args[0]);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2856 else {
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2857 const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv));
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2858 char *buf, *tmp, *tmp2;
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2859
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2860 if (cur) {
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2861 tmp = g_markup_escape_text(cur, -1);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2862 tmp2 = purple_markup_linkify(tmp);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2863 buf = g_strdup_printf(_("current topic is: %s"), tmp2);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2864 g_free(tmp);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2865 g_free(tmp2);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2866 } else
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2867 buf = g_strdup(_("No topic is set"));
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2868 purple_conv_chat_write(PURPLE_CONV_CHAT(conv), "", buf,
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2869 PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2870 g_free(buf);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2871 }
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2872
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2873 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2874 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2875
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2876 static PurpleCmdRet jabber_cmd_chat_nick(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2877 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2878 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2879 JabberChat *chat = jabber_chat_find_by_conv(conv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2880
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2881 if(!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2882 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2883
28793
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2884 if (!jabber_resourceprep_validate(args[0])) {
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2885 *error = g_strdup(_("Invalid nickname"));
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2886 return PURPLE_CMD_RET_FAILED;
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2887 }
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2888
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2889 if (jabber_chat_change_nick(chat, args[0]))
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2890 return PURPLE_CMD_RET_OK;
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2891 else
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2892 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2893 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2894
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2895 static PurpleCmdRet jabber_cmd_chat_part(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2896 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2897 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2898 JabberChat *chat = jabber_chat_find_by_conv(conv);
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2899
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2900 if (!chat)
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2901 return PURPLE_CMD_RET_FAILED;
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2902
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2903 jabber_chat_part(chat, args ? args[0] : NULL);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2904 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2905 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2906
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2907 static PurpleCmdRet jabber_cmd_chat_ban(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2908 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2909 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2910 JabberChat *chat = jabber_chat_find_by_conv(conv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2911
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2912 if(!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2913 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2914
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2915 if(!jabber_chat_ban_user(chat, args[0], args[1])) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2916 *error = g_strdup_printf(_("Unable to ban user %s"), args[0]);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2917 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2918 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2919
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2920 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2921 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2922
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2923 static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2924 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2925 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2926 JabberChat *chat = jabber_chat_find_by_conv(conv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2927
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2928 if (!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2929 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2930
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2931 if (strcmp(args[0], "owner") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2932 strcmp(args[0], "admin") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2933 strcmp(args[0], "member") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2934 strcmp(args[0], "outcast") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2935 strcmp(args[0], "none") != 0) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2936 *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[0]);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2937 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2938 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2939
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2940 if (args[1]) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2941 int i;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2942 char **nicks = g_strsplit(args[1], " ", -1);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2943
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2944 for (i = 0; nicks[i]; ++i)
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2945 if (!jabber_chat_affiliate_user(chat, nicks[i], args[0])) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2946 *error = g_strdup_printf(_("Unable to affiliate user %s as \"%s\""), nicks[i], args[0]);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2947 g_strfreev(nicks);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2948 return PURPLE_CMD_RET_FAILED;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2949 }
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2950
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2951 g_strfreev(nicks);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2952 } else {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2953 jabber_chat_affiliation_list(chat, args[0]);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2954 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2955
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2956 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2957 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2958
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2959 static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2960 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2961 {
18855
28a7c9dbbc2b Fix uninitialized variable access.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18711
diff changeset
2962 JabberChat *chat = jabber_chat_find_by_conv(conv);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2963
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2964 if (!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2965 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2966
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2967 if (strcmp(args[0], "moderator") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2968 strcmp(args[0], "participant") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2969 strcmp(args[0], "visitor") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2970 strcmp(args[0], "none") != 0) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2971 *error = g_strdup_printf(_("Unknown role: \"%s\""), args[0]);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2972 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2973 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2974
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2975 if (args[1]) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2976 int i;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2977 char **nicks = g_strsplit(args[1], " ", -1);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2978
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2979 for (i = 0; nicks[i]; i++)
29464
c8b407fec879 jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <paul@darkrain42.org>
parents: 29462
diff changeset
2980 if (!jabber_chat_role_user(chat, nicks[i], args[0], NULL)) {
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2981 *error = g_strdup_printf(_("Unable to set role \"%s\" for user: %s"),
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2982 args[0], nicks[i]);
29462
403a53ff9aa4 jabber: Possible leaks--;
Paul Aurich <paul@darkrain42.org>
parents: 29439
diff changeset
2983 g_strfreev(nicks);
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2984 return PURPLE_CMD_RET_FAILED;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2985 }
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2986
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2987 g_strfreev(nicks);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2988 } else {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2989 jabber_chat_role_list(chat, args[0]);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2990 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2991 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2992 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2993
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2994 static PurpleCmdRet jabber_cmd_chat_invite(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2995 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2996 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2997 if(!args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2998 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2999
32790
3e7a7e14af62 Our API really shouldn't have a 'gc' in it anymore.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32773
diff changeset
3000 jabber_chat_invite(purple_conversation_get_connection(conv),
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3001 purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), args[1] ? args[1] : "",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3002 args[0]);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3003
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3004 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3005 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3006
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3007 static PurpleCmdRet jabber_cmd_chat_join(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3008 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3009 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3010 JabberChat *chat = jabber_chat_find_by_conv(conv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3011 GHashTable *components;
32198
bcf0b8ba1a79 jabber: Fix /join behavior. Closes #14205.
Paul Aurich <paul@darkrain42.org>
parents: 32160
diff changeset
3012 JabberID *jid = NULL;
31756
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3013 const char *room = NULL, *server = NULL, *handle = NULL;
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3014
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3015 if (!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3016 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3017
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3018 components = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3019
32198
bcf0b8ba1a79 jabber: Fix /join behavior. Closes #14205.
Paul Aurich <paul@darkrain42.org>
parents: 32160
diff changeset
3020 if (strchr(args[0], '@'))
bcf0b8ba1a79 jabber: Fix /join behavior. Closes #14205.
Paul Aurich <paul@darkrain42.org>
parents: 32160
diff changeset
3021 jid = jabber_id_new(args[0]);
31756
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3022 if (jid) {
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3023 room = jid->node;
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3024 server = jid->domain;
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3025 handle = jid->resource ? jid->resource : chat->handle;
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3026 } else {
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3027 /* If jabber_id_new failed, the user may have just passed in
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3028 * a room name. For backward compatibility, handle that here.
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3029 */
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3030 if (strchr(args[0], '@')) {
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3031 *error = g_strdup(_("Invalid XMPP ID"));
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3032 return PURPLE_CMD_RET_FAILED;
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3033 }
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3034
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3035 room = args[0];
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3036 server = chat->server;
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3037 handle = chat->handle;
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3038 }
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3039
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3040 g_hash_table_insert(components, "room", (gpointer)room);
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3041 g_hash_table_insert(components, "server", (gpointer)server);
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3042 g_hash_table_insert(components, "handle", (gpointer)handle);
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3043
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3044 if (args[1])
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3045 g_hash_table_insert(components, "password", args[1]);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3046
32790
3e7a7e14af62 Our API really shouldn't have a 'gc' in it anymore.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32773
diff changeset
3047 jabber_chat_join(purple_conversation_get_connection(conv), components);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3048
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3049 g_hash_table_destroy(components);
31756
9d8a47ca14a1 jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents: 31688
diff changeset
3050 jabber_id_free(jid);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3051 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3052 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3053
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3054 static PurpleCmdRet jabber_cmd_chat_kick(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3055 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3056 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3057 JabberChat *chat = jabber_chat_find_by_conv(conv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3058
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
3059 if(!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3060 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3061
29464
c8b407fec879 jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <paul@darkrain42.org>
parents: 29462
diff changeset
3062 if(!jabber_chat_role_user(chat, args[0], "none", args[1])) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3063 *error = g_strdup_printf(_("Unable to kick user %s"), args[0]);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3064 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3065 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3066
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3067 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3068 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3069
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3070 static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3071 const char *cmd, char **args, char **error, void *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3072 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3073 JabberChat *chat = jabber_chat_find_by_conv(conv);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3074 char *who;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3075
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
3076 if (!chat)
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
3077 return PURPLE_CMD_RET_FAILED;
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
3078
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3079 who = g_strdup_printf("%s@%s/%s", chat->room, chat->server, args[0]);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3080
32790
3e7a7e14af62 Our API really shouldn't have a 'gc' in it anymore.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32773
diff changeset
3081 jabber_message_send_im(purple_conversation_get_connection(conv), who, args[1], 0);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3082
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3083 g_free(who);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3084 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3085 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3086
17562
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3087 static PurpleCmdRet jabber_cmd_ping(PurpleConversation *conv,
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3088 const char *cmd, char **args, char **error, void *data)
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3089 {
25984
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
3090 PurpleAccount *account;
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
3091 PurpleConnection *pc;
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
3092
17562
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3093 if(!args || !args[0])
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3094 return PURPLE_CMD_RET_FAILED;
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3095
25984
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
3096 account = purple_conversation_get_account(conv);
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
3097 pc = purple_account_get_connection(account);
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
3098
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
3099 if(!jabber_ping_jid(purple_connection_get_protocol_data(pc), args[0])) {
17562
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3100 *error = g_strdup_printf(_("Unable to ping user %s"), args[0]);
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3101 return PURPLE_CMD_RET_FAILED;
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3102 }
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3103
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3104 return PURPLE_CMD_RET_OK;
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3105 }
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
3106
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3107 static gboolean _jabber_send_buzz(JabberStream *js, const char *username, char **error) {
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3108
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3109 JabberBuddy *jb;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3110 JabberBuddyResource *jbr;
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3111 PurpleConnection *gc = js->gc;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
3112 PurpleBuddy *buddy =
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
3113 purple_find_buddy(purple_connection_get_account(gc), username);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
3114 const gchar *alias =
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
3115 buddy ? purple_buddy_get_contact_alias(buddy) : username;
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3116
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3117 if(!username)
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3118 return FALSE;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3119
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3120 jb = jabber_buddy_find(js, username, FALSE);
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3121 if(!jb) {
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
3122 *error = g_strdup_printf(_("Unable to buzz, because there is nothing "
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
3123 "known about %s."), alias);
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3124 return FALSE;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3125 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3126
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3127 jbr = jabber_buddy_find_resource(jb, NULL);
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3128 if (!jbr) {
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
3129 *error = g_strdup_printf(_("Unable to buzz, because %s might be offline."),
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
3130 alias);
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3131 return FALSE;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3132 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3133
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3134 if (jabber_resource_has_capability(jbr, NS_ATTENTION)) {
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3135 xmlnode *buzz, *msg = xmlnode_new("message");
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3136 gchar *to;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
3137
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3138 to = g_strdup_printf("%s/%s", username, jbr->name);
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3139 xmlnode_set_attrib(msg, "to", to);
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3140 g_free(to);
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3141
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3142 /* avoid offline storage */
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3143 xmlnode_set_attrib(msg, "type", "headline");
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3144
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3145 buzz = xmlnode_new_child(msg, "attention");
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3146 xmlnode_set_namespace(buzz, NS_ATTENTION);
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3147
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3148 jabber_send(js, msg);
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3149 xmlnode_free(msg);
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3150
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3151 return TRUE;
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3152 } else {
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
3153 *error = g_strdup_printf(_("Unable to buzz, because %s does "
25985
7ace7bf0bfad Use "does" here sounds more natural to me
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
3154 "not support it or does not wish to receive buzzes now."), alias);
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3155 return FALSE;
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3156 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3157 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3158
17615
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
3159 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv,
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
3160 const char *cmd, char **args, char **error, void *data)
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
3161 {
32700
1f68af4afe67 Use purple_conversation accessor methods.
andrew.victor@mxit.com
parents: 32477
diff changeset
3162 PurpleAccount *account = purple_conversation_get_account(conv);
32708
10e5000326a5 Convert code to use the purple_account accessor functions.
andrew.victor@mxit.com
parents: 32707
diff changeset
3163 JabberStream *js = purple_connection_get_protocol_data(purple_account_get_connection(account));
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3164 const gchar *who;
29672
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3165 gchar *description;
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3166 PurpleBuddy *buddy;
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3167 const char *alias;
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
3168 PurpleAttentionType *attn =
32700
1f68af4afe67 Use purple_conversation accessor methods.
andrew.victor@mxit.com
parents: 32477
diff changeset
3169 purple_get_attention_type_from_code(account, 0);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
3170
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3171 if (!args || !args[0]) {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3172 /* use the buddy from conversation, if it's a one-to-one conversation */
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3173 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3174 who = purple_conversation_get_name(conv);
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3175 } else {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3176 return PURPLE_CMD_RET_FAILED;
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3177 }
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3178 } else {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3179 who = args[0];
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
3180 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
3181
32700
1f68af4afe67 Use purple_conversation accessor methods.
andrew.victor@mxit.com
parents: 32477
diff changeset
3182 buddy = purple_find_buddy(account, who);
29672
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3183 if (buddy != NULL)
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3184 alias = purple_buddy_get_contact_alias(buddy);
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3185 else
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3186 alias = who;
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
3187
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
3188 description =
29672
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3189 g_strdup_printf(purple_attention_type_get_outgoing_desc(attn), alias);
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
3190 purple_conversation_write(conv, NULL, description,
29672
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3191 PURPLE_MESSAGE_NOTIFY | PURPLE_MESSAGE_SYSTEM, time(NULL));
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3192 g_free(description);
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29669
diff changeset
3193 return _jabber_send_buzz(js, who, error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED;
17615
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
3194 }
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
3195
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3196 GList *jabber_attention_types(PurpleAccount *account)
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3197 {
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3198 static GList *types = NULL;
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3199
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3200 if (!types) {
22097
eab7d03edfcb This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22034
diff changeset
3201 types = g_list_append(types, purple_attention_type_new("Buzz", _("Buzz"),
eab7d03edfcb This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22034
diff changeset
3202 _("%s has buzzed you!"), _("Buzzing %s...")));
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3203 }
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3204
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3205 return types;
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3206 }
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3207
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3208 gboolean jabber_send_attention(PurpleConnection *gc, const char *username, guint code)
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3209 {
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
3210 JabberStream *js = purple_connection_get_protocol_data(gc);
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3211 gchar *error = NULL;
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3212
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3213 if (!_jabber_send_buzz(js, username, &error)) {
29901
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29889
diff changeset
3214 PurpleAccount *account = purple_connection_get_account(gc);
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29889
diff changeset
3215 PurpleConversation *conv =
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29889
diff changeset
3216 purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, username, account);
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3217 purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)");
29901
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29889
diff changeset
3218
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29889
diff changeset
3219 if (conv) {
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29889
diff changeset
3220 purple_conversation_write(conv, username, error, PURPLE_MESSAGE_ERROR,
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29889
diff changeset
3221 time(NULL));
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29889
diff changeset
3222 }
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29889
diff changeset
3223
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3224 g_free(error);
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3225 return FALSE;
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3226 }
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3227
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3228 return TRUE;
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3229 }
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3230
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3231
16240
547c76fe2e7a 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@gmail.com>
parents: 16068
diff changeset
3232 gboolean jabber_offline_message(const PurpleBuddy *buddy)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3233 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3234 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3235 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3236
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3237 #ifdef USE_VV
26539
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
3238 gboolean
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
3239 jabber_audio_enabled(JabberStream *js, const char *namespace)
26535
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3240 {
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3241 PurpleMediaManager *manager = purple_media_manager_get();
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3242 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager);
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3243
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3244 return (caps & (PURPLE_MEDIA_CAPS_AUDIO | PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION));
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3245 }
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3246
27079
72bcdcb0629f Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 27069
diff changeset
3247 gboolean
26539
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
3248 jabber_video_enabled(JabberStream *js, const char *namespace)
26535
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3249 {
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3250 PurpleMediaManager *manager = purple_media_manager_get();
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3251 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager);
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3252
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3253 return (caps & (PURPLE_MEDIA_CAPS_VIDEO | PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION));
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3254 }
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3255
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3256 typedef struct {
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3257 PurpleAccount *account;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3258 gchar *who;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3259 PurpleMediaSessionType type;
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
3260
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3261 } JabberMediaRequest;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3262
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3263 static void
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3264 jabber_media_cancel_cb(JabberMediaRequest *request,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3265 PurpleRequestFields *fields)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3266 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3267 g_free(request->who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3268 g_free(request);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3269 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3270
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3271 static void
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3272 jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestFields *fields)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3273 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3274 PurpleRequestField *field =
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3275 purple_request_fields_get_field(fields, "resource");
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3276 int selected_id = purple_request_field_choice_get_value(field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3277 GList *labels = purple_request_field_choice_get_labels(field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3278 gchar *who = g_strdup_printf("%s/%s", request->who,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3279 (gchar*)g_list_nth_data(labels, selected_id));
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3280 jabber_initiate_media(request->account, who, request->type);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3281
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3282 g_free(who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3283 g_free(request->who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3284 g_free(request);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3285 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3286 #endif
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3287
26447
34eb898478b4 Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26417
diff changeset
3288 gboolean
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
3289 jabber_initiate_media(PurpleAccount *account, const char *who,
25720
551a462b346a Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25718
diff changeset
3290 PurpleMediaSessionType type)
25637
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3291 {
26416
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3292 #ifdef USE_VV
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
3293 PurpleConnection *gc = purple_account_get_connection(account);
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
3294 JabberStream *js = purple_connection_get_protocol_data(gc);
26081
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3295 JabberBuddy *jb;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3296 JabberBuddyResource *jbr = NULL;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3297 char *resource;
26081
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3298
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3299 if (!js) {
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3300 purple_debug_error("jabber",
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3301 "jabber_initiate_media: NULL stream\n");
26447
34eb898478b4 Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26417
diff changeset
3302 return FALSE;
26081
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3303 }
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3304
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3305 if((resource = jabber_get_resource(who)) != NULL) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3306 /* they've specified a resource, no need to ask or
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3307 * default or anything, just do it */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3308
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3309 jb = jabber_buddy_find(js, who, FALSE);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3310 jbr = jabber_buddy_find_resource(jb, resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3311 g_free(resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3312
30969
8737d2e4b297 restore the Jingle method selection to prefer standard over Google-specific
Marcus Lundblad <ml@update.uu.se>
parents: 30961
diff changeset
3313 if (type & PURPLE_MEDIA_AUDIO &&
8737d2e4b297 restore the Jingle method selection to prefer standard over Google-specific
Marcus Lundblad <ml@update.uu.se>
parents: 30961
diff changeset
3314 !jabber_resource_has_capability(jbr,
8737d2e4b297 restore the Jingle method selection to prefer standard over Google-specific
Marcus Lundblad <ml@update.uu.se>
parents: 30961
diff changeset
3315 JINGLE_APP_RTP_SUPPORT_AUDIO) &&
8737d2e4b297 restore the Jingle method selection to prefer standard over Google-specific
Marcus Lundblad <ml@update.uu.se>
parents: 30961
diff changeset
3316 jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE))
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3317 return jabber_google_session_initiate(js, who, type);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3318 else
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3319 return jingle_rtp_initiate_media(js, who, type);
26081
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3320 }
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3321
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3322 jb = jabber_buddy_find(js, who, FALSE);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3323
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3324 if(!jb || !jb->resources) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3325 /* no resources online, we're trying to initiate with someone
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3326 * whose presence we're not subscribed to, or
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3327 * someone who is offline. Let's inform the user */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3328 char *msg;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3329
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3330 if(!jb) {
26518
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26514
diff changeset
3331 msg = g_strdup_printf(_("Unable to initiate media with %s: invalid JID"), who);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3332 } else if(jb->subscription & JABBER_SUB_TO) {
26518
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26514
diff changeset
3333 msg = g_strdup_printf(_("Unable to initiate media with %s: user is not online"), who);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3334 } else {
26518
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26514
diff changeset
3335 msg = g_strdup_printf(_("Unable to initiate media with %s: not subscribed to user presence"), who);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3336 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3337
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3338 purple_notify_error(account, _("Media Initiation Failed"),
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3339 _("Media Initiation Failed"), msg);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3340 g_free(msg);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3341 return FALSE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3342 } else if(!jb->resources->next) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3343 /* only 1 resource online (probably our most common case)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3344 * so no need to ask who to initiate with */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3345 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3346 gboolean result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3347 jbr = jb->resources->data;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3348 name = g_strdup_printf("%s/%s", who, jbr->name);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3349 result = jabber_initiate_media(account, name, type);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3350 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3351 return result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3352 } else {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3353 /* we've got multiple resources,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3354 * we need to pick one to initiate with */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3355 GList *l;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3356 char *msg;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3357 PurpleRequestFields *fields;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3358 PurpleRequestField *field = purple_request_field_choice_new(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3359 "resource", _("Resource"), 0);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3360 PurpleRequestFieldGroup *group;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3361 JabberMediaRequest *request;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3362
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3363 for(l = jb->resources; l; l = l->next)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3364 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3365 JabberBuddyResource *ljbr = l->data;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3366 PurpleMediaCaps caps;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3367 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3368 name = g_strdup_printf("%s/%s", who, ljbr->name);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3369 caps = jabber_get_media_caps(account, name);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3370 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3371
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3372 if ((type & PURPLE_MEDIA_AUDIO) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3373 (type & PURPLE_MEDIA_VIDEO)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3374 if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3375 jbr = ljbr;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3376 purple_request_field_choice_add(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3377 field, jbr->name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3378 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3379 } else if (type & (PURPLE_MEDIA_AUDIO) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3380 (caps & PURPLE_MEDIA_CAPS_AUDIO)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3381 jbr = ljbr;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3382 purple_request_field_choice_add(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3383 field, jbr->name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3384 }else if (type & (PURPLE_MEDIA_VIDEO) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3385 (caps & PURPLE_MEDIA_CAPS_VIDEO)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3386 jbr = ljbr;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3387 purple_request_field_choice_add(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3388 field, jbr->name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3389 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3390 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3391
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3392 if (jbr == NULL) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3393 purple_debug_error("jabber",
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3394 "No resources available\n");
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3395 return FALSE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3396 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3397
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3398 if (g_list_length(purple_request_field_choice_get_labels(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3399 field)) <= 1) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3400 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3401 gboolean result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3402 purple_request_field_destroy(field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3403 name = g_strdup_printf("%s/%s", who, jbr->name);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3404 result = jabber_initiate_media(account, name, type);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3405 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3406 return result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3407 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3408
26518
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26514
diff changeset
3409 msg = g_strdup_printf(_("Please select the resource of %s with which you would like to start a media session."), who);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3410 fields = purple_request_fields_new();
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3411 group = purple_request_field_group_new(NULL);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3412 request = g_new0(JabberMediaRequest, 1);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3413 request->account = account;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3414 request->who = g_strdup(who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3415 request->type = type;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3416
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3417 purple_request_field_group_add_field(group, field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3418 purple_request_fields_add_group(fields, group);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3419 purple_request_fields(account, _("Select a Resource"), msg,
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3420 NULL, fields, _("Initiate Media"),
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3421 G_CALLBACK(jabber_media_ok_cb), _("Cancel"),
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3422 G_CALLBACK(jabber_media_cancel_cb),
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3423 account, who, NULL, request);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3424
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3425 g_free(msg);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3426 return TRUE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3427 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3428 #endif
26447
34eb898478b4 Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26417
diff changeset
3429 return FALSE;
25637
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3430 }
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3431
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3432 PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who)
25637
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3433 {
26416
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3434 #ifdef USE_VV
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
3435 PurpleConnection *gc = purple_account_get_connection(account);
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
3436 JabberStream *js = purple_connection_get_protocol_data(gc);
25665
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3437 JabberBuddy *jb;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3438 JabberBuddyResource *jbr;
29414
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29413
diff changeset
3439 PurpleMediaCaps total = PURPLE_MEDIA_CAPS_NONE;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3440 gchar *resource;
29413
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3441 GList *specific = NULL, *l;
25665
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3442
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3443 if (!js) {
26500
da651b0f40a1 Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26447
diff changeset
3444 purple_debug_info("jabber",
da651b0f40a1 Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26447
diff changeset
3445 "jabber_can_do_media: NULL stream\n");
25665
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3446 return FALSE;
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3447 }
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3448
29413
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3449 jb = jabber_buddy_find(js, who, FALSE);
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3450
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3451 if (!jb || !jb->resources) {
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3452 /* no resources online, we're trying to get caps for someone
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3453 * whose presence we're not subscribed to, or
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3454 * someone who is offline. */
29414
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29413
diff changeset
3455 return total;
29413
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3456
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3457 } else if ((resource = jabber_get_resource(who)) != NULL) {
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3458 /* they've specified a resource, no need to ask or
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3459 * default or anything, just do it */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3460 jbr = jabber_buddy_find_resource(jb, resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3461 g_free(resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3462
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3463 if (!jbr) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3464 purple_debug_error("jabber", "jabber_get_media_caps:"
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3465 " Can't find resource %s\n", who);
29414
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29413
diff changeset
3466 return total;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3467 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3468
29413
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3469 l = specific = g_list_prepend(specific, jbr);
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3470
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3471 } else {
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3472 /* we've got multiple resources, combine their caps */
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3473 l = jb->resources;
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3474 }
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3475
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3476 for (; l; l = l->next) {
29414
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29413
diff changeset
3477 PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE;
29413
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3478 jbr = l->data;
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3479
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3480 if (jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3481 JINGLE_APP_RTP_SUPPORT_AUDIO))
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3482 caps |= PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION |
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3483 PURPLE_MEDIA_CAPS_AUDIO;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3484 if (jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3485 JINGLE_APP_RTP_SUPPORT_VIDEO))
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3486 caps |= PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION |
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3487 PURPLE_MEDIA_CAPS_VIDEO;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3488 if (caps & PURPLE_MEDIA_CAPS_AUDIO && caps &
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3489 PURPLE_MEDIA_CAPS_VIDEO)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3490 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3491 if (caps != PURPLE_MEDIA_CAPS_NONE) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3492 if (!jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3493 JINGLE_TRANSPORT_ICEUDP) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3494 !jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3495 JINGLE_TRANSPORT_RAWUDP)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3496 purple_debug_info("jingle-rtp", "Buddy doesn't "
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3497 "support the same transport types\n");
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3498 caps = PURPLE_MEDIA_CAPS_NONE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3499 } else
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3500 caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION |
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3501 PURPLE_MEDIA_CAPS_CHANGE_DIRECTION;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3502 }
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3503 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE)) {
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3504 caps |= PURPLE_MEDIA_CAPS_AUDIO;
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3505 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VIDEO))
27079
72bcdcb0629f Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 27069
diff changeset
3506 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
72bcdcb0629f Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 27069
diff changeset
3507 }
29414
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29413
diff changeset
3508
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29413
diff changeset
3509 total |= caps;
25664
d0ac3c438b71 Check remote JID's capabilities for audio and video XEP support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25662
diff changeset
3510 }
26046
99055b8db16b Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26043
diff changeset
3511
29413
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3512 if (specific) {
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29333
diff changeset
3513 g_list_free(specific);
26046
99055b8db16b Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26043
diff changeset
3514 }
26190
d6e23439b77c Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26168
diff changeset
3515
29414
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29413
diff changeset
3516 return total;
26416
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3517 #else
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3518 return PURPLE_MEDIA_CAPS_NONE;
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3519 #endif
25637
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3520 }
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3521
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3522 gboolean jabber_can_receive_file(PurpleConnection *gc, const char *who)
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3523 {
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
3524 JabberStream *js = purple_connection_get_protocol_data(gc);
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3525
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3526 if (js) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3527 JabberBuddy *jb = jabber_buddy_find(js, who, FALSE);
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3528 GList *iter;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3529 gboolean has_resources_without_caps = FALSE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3530
28971
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3531 /* if we didn't find a JabberBuddy, we don't have presence for this
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3532 buddy, let's assume they can receive files, disco should tell us
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3533 when actually trying */
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3534 if (jb == NULL)
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3535 return TRUE;
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3536
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3537 /* find out if there is any resources without caps */
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3538 for (iter = jb->resources; iter ; iter = g_list_next(iter)) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3539 JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3540
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3541 if (!jabber_resource_know_capabilities(jbr)) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3542 has_resources_without_caps = TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3543 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3544 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3545
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3546 if (has_resources_without_caps) {
31534
a8cc50c2279f Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents: 31370
diff changeset
3547 /* there is at least one resource which we don't have caps for,
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3548 let's assume they can receive files... */
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3549 return TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3550 } else {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3551 /* we have caps for all the resources, see if at least one has
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3552 right caps */
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3553 for (iter = jb->resources; iter ; iter = g_list_next(iter)) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3554 JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3555
30653
fa311a0e51c0 jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents: 30629
diff changeset
3556 if (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER)
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3557 && (jabber_resource_has_capability(jbr,
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3558 NS_BYTESTREAMS)
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3559 || jabber_resource_has_capability(jbr, NS_IBB))) {
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3560 return TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3561 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3562 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3563 return FALSE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3564 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3565 } else {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3566 return TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3567 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3568 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3569
29956
342ed5917f56 jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents: 29949
diff changeset
3570 static PurpleCmdRet
29949
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3571 jabber_cmd_mood(PurpleConversation *conv,
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3572 const char *cmd, char **args, char **error, void *data)
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3573 {
32700
1f68af4afe67 Use purple_conversation accessor methods.
andrew.victor@mxit.com
parents: 32477
diff changeset
3574 PurpleAccount *account = purple_conversation_get_account(conv);
32708
10e5000326a5 Convert code to use the purple_account accessor functions.
andrew.victor@mxit.com
parents: 32707
diff changeset
3575 JabberStream *js = purple_connection_get_protocol_data(purple_account_get_connection(account));
29949
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3576
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3577 if (js->pep) {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3578 /* if no argument was given, unset mood */
30848
77ac5f4584bd I'm pretty sure this is a logical operation, not bitwise.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30753
diff changeset
3579 if (!args || !args[0]) {
29949
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3580 jabber_mood_set(js, NULL, NULL);
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3581 } else if (!args[1]) {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3582 jabber_mood_set(js, args[0], NULL);
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3583 } else {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3584 jabber_mood_set(js, args[0], args[1]);
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3585 }
29956
342ed5917f56 jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents: 29949
diff changeset
3586
342ed5917f56 jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents: 29949
diff changeset
3587 return PURPLE_CMD_RET_OK;
29949
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3588 } else {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3589 /* account does not support PEP, can't set a mood */
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3590 purple_conversation_write(conv, NULL,
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3591 _("Account does not support PEP, can't set mood"),
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3592 PURPLE_MESSAGE_ERROR, time(NULL));
29956
342ed5917f56 jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents: 29949
diff changeset
3593 return PURPLE_CMD_RET_FAILED;
29949
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3594 }
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3595 }
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3596
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3597 static void jabber_register_commands(PurplePlugin *plugin)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3598 {
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3599 GSList *commands = NULL;
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3600 PurpleCmdId id;
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3601 id = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3602 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3603 "prpl-jabber", jabber_cmd_chat_config,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3604 _("config: Configure a chat room."), NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3605 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3606
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3607 id = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3608 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3609 "prpl-jabber", jabber_cmd_chat_config,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3610 _("configure: Configure a chat room."), NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3611 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3612
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3613 id = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3614 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3615 "prpl-jabber", jabber_cmd_chat_nick,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3616 _("nick &lt;new nickname&gt;: Change your nickname."),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3617 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3618 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3619
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3620 id = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3621 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3622 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
28767
4a0d69b9d8a8 jabber: Correct the /part command's help.
Paul Aurich <paul@darkrain42.org>
parents: 28729
diff changeset
3623 jabber_cmd_chat_part, _("part [message]: Leave the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3624 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3625 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3626
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3627 id = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3628 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3629 "prpl-jabber", jabber_cmd_chat_register,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3630 _("register: Register with a chat room."), NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3631 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3632
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3633 /* XXX: there needs to be a core /topic cmd, methinks */
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3634 id = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3635 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3636 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3637 jabber_cmd_chat_topic,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3638 _("topic [new topic]: View or change the topic."),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3639 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3640 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3641
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3642 id = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3643 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3644 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3645 jabber_cmd_chat_ban,
22602
9a84976c8e76 Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents: 22448
diff changeset
3646 _("ban &lt;user&gt; [reason]: Ban a user from the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3647 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3648 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3649
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3650 id = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3651 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3652 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3653 jabber_cmd_chat_affiliate,
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
3654 _("affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get the users with an affiliation or set users' affiliation with the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3655 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3656 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3657
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3658 id = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3659 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3660 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3661 jabber_cmd_chat_role,
28321
23dda7e57bcf Fix two strings as pointed out on translators@
Paul Aurich <paul@darkrain42.org>
parents: 28319
diff changeset
3662 _("role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the users with a role or set users' role with the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3663 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3664 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3665
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3666 id = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3667 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3668 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3669 jabber_cmd_chat_invite,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3670 _("invite &lt;user&gt; [message]: Invite a user to the room."),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3671 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3672 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3673
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3674 id = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3675 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3676 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3677 jabber_cmd_chat_join,
32198
bcf0b8ba1a79 jabber: Fix /join behavior. Closes #14205.
Paul Aurich <paul@darkrain42.org>
parents: 32160
diff changeset
3678 _("join: &lt;room[@server]&gt; [password]: Join a chat."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3679 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3680 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3681
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3682 id = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3683 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3684 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3685 jabber_cmd_chat_kick,
22602
9a84976c8e76 Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents: 22448
diff changeset
3686 _("kick &lt;user&gt; [reason]: Kick a user from the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3687 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3688 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3689
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3690 id = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3691 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3692 "prpl-jabber", jabber_cmd_chat_msg,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3693 _("msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3694 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3695 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3696
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3697 id = purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL,
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3698 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM |
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3699 PURPLE_CMD_FLAG_PRPL_ONLY,
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3700 "prpl-jabber", jabber_cmd_ping,
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3701 _("ping &lt;jid&gt;: Ping a user/component/server."),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3702 NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3703 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3704
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3705 id = purple_cmd_register("buzz", "w", PURPLE_CMD_P_PRPL,
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
3706 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY |
24154
b3ab1c23cdf6 Register the /buzz command using PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS.
Marcus Lundblad <ml@update.uu.se>
parents: 24153
diff changeset
3707 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
17615
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
3708 "prpl-jabber", jabber_cmd_buzz,
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
3709 _("buzz: Buzz a user to get their attention"), NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3710 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
29949
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3711
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3712 id = purple_cmd_register("mood", "ws", PURPLE_CMD_P_PRPL,
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3713 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM |
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3714 PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3715 "prpl-jabber", jabber_cmd_mood,
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29901
diff changeset
3716 _("mood: Set current user mood"), NULL);
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3717 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3718
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3719 g_hash_table_insert(jabber_cmds, plugin, commands);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3720 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3721
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3722 static void cmds_free_func(gpointer value)
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3723 {
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3724 GSList *commands = value;
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3725 while (commands) {
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3726 purple_cmd_unregister(GPOINTER_TO_UINT(commands->data));
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3727 commands = g_slist_delete_link(commands, commands);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3728 }
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3729 }
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3730
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3731 static void jabber_unregister_commands(PurplePlugin *plugin)
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3732 {
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3733 g_hash_table_remove(jabber_cmds, plugin);
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3734 }
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3735
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3736 /* IPC functions */
25587
2bf9bf49cea8 * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25586
diff changeset
3737
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3738 /**
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3739 * IPC function for determining if a contact supports a certain feature.
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3740 *
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3741 * @param account The PurpleAccount
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3742 * @param jid The full JID of the contact.
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3743 * @param feature The feature's namespace.
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3744 *
25587
2bf9bf49cea8 * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25586
diff changeset
3745 * @return TRUE if supports feature; else FALSE.
2bf9bf49cea8 * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25586
diff changeset
3746 */
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3747 static gboolean
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3748 jabber_ipc_contact_has_feature(PurpleAccount *account, const gchar *jid,
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3749 const gchar *feature)
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3750 {
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3751 PurpleConnection *gc = purple_account_get_connection(account);
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3752 JabberStream *js;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3753 JabberBuddy *jb;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3754 JabberBuddyResource *jbr;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3755 gchar *resource;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3756
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3757 if (!purple_account_is_connected(account))
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3758 return FALSE;
32456
3caef255ad47 Convert jabber prpl to use accessor functions purple_connection_get_protocol_data() and purple_connection_set_protocol_data().
andrew.victor@mxit.com
parents: 32366
diff changeset
3759 js = purple_connection_get_protocol_data(gc);
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3760
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
3761 if (!(resource = jabber_get_resource(jid)) ||
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3762 !(jb = jabber_buddy_find(js, jid, FALSE)) ||
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3763 !(jbr = jabber_buddy_find_resource(jb, resource))) {
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3764 g_free(resource);
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3765 return FALSE;
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3766 }
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3767
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3768 g_free(resource);
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3769
25770
b1b1b75a922e Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents: 25763
diff changeset
3770 return jabber_resource_has_capability(jbr, feature);
25585
45816181b7de * fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25575
diff changeset
3771 }
45816181b7de * fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25575
diff changeset
3772
25588
61f37abc8a70 * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25587
diff changeset
3773 static void
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3774 jabber_ipc_add_feature(const gchar *feature)
25588
61f37abc8a70 * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25587
diff changeset
3775 {
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3776 if (!feature)
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3777 return;
25589
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3778 jabber_add_feature(feature, 0);
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3779
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3780 /* send presence with new caps info for all connected accounts */
25590
7f6558c7a0a3 * implemented jabber_caps_broadcast_change() and finished jabber_ipc_add_feature() IPC function
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25589
diff changeset
3781 jabber_caps_broadcast_change();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3782 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3783
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3784 static void
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3785 jabber_do_init(void)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3786 {
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3787 GHashTable *ui_info = purple_core_get_ui_info();
27137
2d258a809609 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <paul@darkrain42.org>
parents: 27136
diff changeset
3788 const gchar *ui_type;
27593
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3789 const gchar *type = "pc"; /* default client type, if unknown or
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3790 unspecified */
27593
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3791 const gchar *ui_name = NULL;
29959
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3792 #ifdef HAVE_CYRUS_SASL
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3793 /* We really really only want to do this once per process */
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3794 static gboolean sasl_initialized = FALSE;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3795 #ifdef _WIN32
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3796 UINT old_error_mode;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3797 gchar *sasldir;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3798 #endif
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3799 int ret;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3800 #endif
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3801
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3802 /* XXX - If any other plugin wants SASL this won't be good ... */
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3803 #ifdef HAVE_CYRUS_SASL
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3804 if (!sasl_initialized) {
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3805 sasl_initialized = TRUE;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3806 #ifdef _WIN32
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3807 sasldir = g_build_filename(wpurple_install_dir(), "sasl2", NULL);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3808 sasl_set_path(SASL_PATH_TYPE_PLUGIN, sasldir);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3809 g_free(sasldir);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3810 /* Suppress error popups for failing to load sasl plugins */
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3811 old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3812 #endif
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3813 if ((ret = sasl_client_init(NULL)) != SASL_OK) {
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3814 purple_debug_error("xmpp", "Error (%d) initializing SASL.\n", ret);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3815 }
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3816 #ifdef _WIN32
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3817 /* Restore the original error mode */
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3818 SetErrorMode(old_error_mode);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3819 #endif
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3820 }
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29958
diff changeset
3821 #endif
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3822
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3823 jabber_cmds = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, cmds_free_func);
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3824
27137
2d258a809609 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <paul@darkrain42.org>
parents: 27136
diff changeset
3825 ui_type = ui_info ? g_hash_table_lookup(ui_info, "client_type") : NULL;
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3826 if (ui_type) {
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3827 if (strcmp(ui_type, "pc") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3828 strcmp(ui_type, "console") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3829 strcmp(ui_type, "phone") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3830 strcmp(ui_type, "handheld") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3831 strcmp(ui_type, "web") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3832 strcmp(ui_type, "bot") == 0) {
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3833 type = ui_type;
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3834 }
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3835 }
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3836
27593
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3837 if (ui_info)
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3838 ui_name = g_hash_table_lookup(ui_info, "name");
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3839 if (ui_name == NULL)
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3840 ui_name = PACKAGE;
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3841
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3842 jabber_add_identity("client", type, NULL, ui_name);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3843
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3844 /* initialize jabber_features list */
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3845 jabber_add_feature(NS_LAST_ACTIVITY, 0);
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3846 jabber_add_feature(NS_OOB_IQ_DATA, 0);
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3847 jabber_add_feature(NS_ENTITY_TIME, 0);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3848 jabber_add_feature("jabber:iq:version", 0);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3849 jabber_add_feature("jabber:x:conference", 0);
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3850 jabber_add_feature(NS_BYTESTREAMS, 0);
25825
69495c6f12af Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents: 25824
diff changeset
3851 jabber_add_feature("http://jabber.org/protocol/caps", 0);
69495c6f12af Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents: 25824
diff changeset
3852 jabber_add_feature("http://jabber.org/protocol/chatstates", 0);
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3853 jabber_add_feature(NS_DISCO_INFO, 0);
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3854 jabber_add_feature(NS_DISCO_ITEMS, 0);
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3855 jabber_add_feature(NS_IBB, 0);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3856 jabber_add_feature("http://jabber.org/protocol/muc", 0);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3857 jabber_add_feature("http://jabber.org/protocol/muc#user", 0);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3858 jabber_add_feature("http://jabber.org/protocol/si", 0);
30653
fa311a0e51c0 jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents: 30629
diff changeset
3859 jabber_add_feature(NS_SI_FILE_TRANSFER, 0);
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3860 jabber_add_feature(NS_XHTML_IM, 0);
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3861 jabber_add_feature(NS_PING, 0);
26529
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26528
diff changeset
3862
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3863 /* Buzz/Attention */
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3864 jabber_add_feature(NS_ATTENTION, jabber_buzz_isenabled);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3865
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3866 /* Bits Of Binary */
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3867 jabber_add_feature(NS_BOB, 0);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3868
26529
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26528
diff changeset
3869 /* Jingle features! */
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26528
diff changeset
3870 jabber_add_feature(JINGLE, 0);
26536
9131368ba4be Advertise ICEUDP only when libnice is available
Paul Aurich <paul@darkrain42.org>
parents: 26535
diff changeset
3871
26535
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3872 #ifdef USE_VV
29027
9feec7d1d95c jabber: Add the missing file and fix up the Google session namespaces
Paul Aurich <paul@darkrain42.org>
parents: 29026
diff changeset
3873 jabber_add_feature(NS_GOOGLE_PROTOCOL_SESSION, jabber_audio_enabled);
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3874 jabber_add_feature(NS_GOOGLE_VOICE, jabber_audio_enabled);
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3875 jabber_add_feature(NS_GOOGLE_VIDEO, jabber_video_enabled);
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3876 jabber_add_feature(NS_GOOGLE_CAMERA, jabber_video_enabled);
28646
5f97830906bc Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <will.thompson@collabora.co.uk>
parents: 28447
diff changeset
3877 jabber_add_feature(JINGLE_APP_RTP, 0);
26539
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
3878 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_AUDIO, jabber_audio_enabled);
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
3879 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled);
28646
5f97830906bc Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <will.thompson@collabora.co.uk>
parents: 28447
diff changeset
3880 jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0);
26819
8b7d1aed6d59 merge of '8ddbfe5d6f5c2455497d11ccbfff769ed4e9fad4'
Paul Aurich <paul@darkrain42.org>
parents: 26818 26537
diff changeset
3881 jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0);
29526
44e949b676f0 Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents: 28729
diff changeset
3882
44e949b676f0 Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents: 28729
diff changeset
3883 g_signal_connect(G_OBJECT(purple_media_manager_get()), "ui-caps-changed",
44e949b676f0 Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents: 28729
diff changeset
3884 G_CALLBACK(jabber_caps_broadcast_change), NULL);
26535
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3885 #endif
26529
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26528
diff changeset
3886
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3887 /* reverse order of unload_plugin */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3888 jabber_iq_init();
29960
13f320cde14f jabber: Heavily refactor jabber_presence_parse(). It's still not short enough.
Paul Aurich <paul@darkrain42.org>
parents: 29959
diff changeset
3889 jabber_presence_init();
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3890 jabber_caps_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3891 /* PEP things should be init via jabber_pep_init, not here */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3892 jabber_pep_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3893 jabber_data_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3894 jabber_bosh_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3895
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3896 /* TODO: Implement adding and retrieving own features via IPC API */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3897
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3898 jabber_ibb_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3899 jabber_si_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3900
29078
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28893
diff changeset
3901 jabber_auth_init();
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3902 }
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3903
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3904 static void
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3905 jabber_do_uninit(void)
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3906 {
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3907 /* reverse order of jabber_do_init */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3908 jabber_bosh_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3909 jabber_data_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3910 jabber_si_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3911 jabber_ibb_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3912 /* PEP things should be uninit via jabber_pep_uninit, not here */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3913 jabber_pep_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3914 jabber_caps_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3915 jabber_presence_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3916 jabber_iq_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3917
30167
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 30166
diff changeset
3918 #ifdef USE_VV
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 30166
diff changeset
3919 g_signal_handlers_disconnect_by_func(G_OBJECT(purple_media_manager_get()),
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 30166
diff changeset
3920 G_CALLBACK(jabber_caps_broadcast_change), NULL);
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 30166
diff changeset
3921 #endif
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 30166
diff changeset
3922
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3923 jabber_auth_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3924 jabber_features_destroy();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3925 jabber_identities_destroy();
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3926
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3927 g_hash_table_destroy(jabber_cmds);
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3928 jabber_cmds = NULL;
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3929 }
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3930
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3931 void jabber_plugin_init(PurplePlugin *plugin)
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3932 {
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3933 ++plugin_ref;
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3934
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3935 if (plugin_ref == 1)
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3936 jabber_do_init();
29078
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28893
diff changeset
3937
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3938 jabber_register_commands(plugin);
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
3939
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3940 /* IPC functions */
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3941 purple_plugin_ipc_register(plugin, "contact_has_feature", PURPLE_CALLBACK(jabber_ipc_contact_has_feature),
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3942 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER,
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3943 purple_value_new(PURPLE_TYPE_BOOLEAN), 3,
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3944 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT),
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3945 purple_value_new(PURPLE_TYPE_STRING),
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3946 purple_value_new(PURPLE_TYPE_STRING));
26952
92565c8e1e3a 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 <paul@darkrain42.org>
parents: 26885
diff changeset
3947
25589
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3948 purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature),
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3949 purple_marshal_VOID__POINTER,
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3950 NULL, 1,
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3951 purple_value_new(PURPLE_TYPE_STRING));
27086
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3952
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3953 purple_plugin_ipc_register(plugin, "register_namespace_watcher",
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3954 PURPLE_CALLBACK(jabber_iq_signal_register),
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3955 purple_marshal_VOID__POINTER_POINTER,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3956 NULL, 2,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3957 purple_value_new(PURPLE_TYPE_STRING), /* node */
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3958 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3959
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3960 purple_plugin_ipc_register(plugin, "unregister_namespace_watcher",
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3961 PURPLE_CALLBACK(jabber_iq_signal_unregister),
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3962 purple_marshal_VOID__POINTER_POINTER,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3963 NULL, 2,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3964 purple_value_new(PURPLE_TYPE_STRING), /* node */
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3965 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3966
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3967 purple_signal_register(plugin, "jabber-register-namespace-watcher",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3968 purple_marshal_VOID__POINTER_POINTER,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3969 NULL, 2,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3970 purple_value_new(PURPLE_TYPE_STRING), /* node */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3971 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3972
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3973 purple_signal_register(plugin, "jabber-unregister-namespace-watcher",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3974 purple_marshal_VOID__POINTER_POINTER,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3975 NULL, 2,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3976 purple_value_new(PURPLE_TYPE_STRING), /* node */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3977 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3978
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3979 purple_signal_connect(plugin, "jabber-register-namespace-watcher",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3980 plugin, PURPLE_CALLBACK(jabber_iq_signal_register), NULL);
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3981 purple_signal_connect(plugin, "jabber-unregister-namespace-watcher",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3982 plugin, PURPLE_CALLBACK(jabber_iq_signal_unregister), NULL);
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3983
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3984
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3985 purple_signal_register(plugin, "jabber-receiving-xmlnode",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3986 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3987 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3988 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3989
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3990 purple_signal_register(plugin, "jabber-sending-xmlnode",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3991 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3992 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3993 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3994
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3995 /*
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3996 * Do not remove this or the plugin will fail. Completely. You have been
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3997 * warned!
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3998 */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
3999 purple_signal_connect_priority(plugin, "jabber-sending-xmlnode",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4000 plugin, PURPLE_CALLBACK(jabber_send_signal_cb),
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4001 NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST);
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4002
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4003 purple_signal_register(plugin, "jabber-sending-text",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4004 purple_marshal_VOID__POINTER_POINTER, NULL, 2,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4005 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4006 purple_value_new_outgoing(PURPLE_TYPE_STRING));
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4007
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4008 purple_signal_register(plugin, "jabber-receiving-message",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4009 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4010 purple_value_new(PURPLE_TYPE_BOOLEAN), 6,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4011 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4012 purple_value_new(PURPLE_TYPE_STRING), /* type */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4013 purple_value_new(PURPLE_TYPE_STRING), /* id */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4014 purple_value_new(PURPLE_TYPE_STRING), /* from */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4015 purple_value_new(PURPLE_TYPE_STRING), /* to */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4016 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4017
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4018 purple_signal_register(plugin, "jabber-receiving-iq",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4019 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4020 purple_value_new(PURPLE_TYPE_BOOLEAN), 5,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4021 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4022 purple_value_new(PURPLE_TYPE_STRING), /* type */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4023 purple_value_new(PURPLE_TYPE_STRING), /* id */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4024 purple_value_new(PURPLE_TYPE_STRING), /* from */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4025 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4026
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4027 purple_signal_register(plugin, "jabber-watched-iq",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4028 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4029 purple_value_new(PURPLE_TYPE_BOOLEAN), 5,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4030 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4031 purple_value_new(PURPLE_TYPE_STRING), /* type */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4032 purple_value_new(PURPLE_TYPE_STRING), /* id */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4033 purple_value_new(PURPLE_TYPE_STRING), /* from */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4034 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); /* child */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4035
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4036 purple_signal_register(plugin, "jabber-receiving-presence",
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4037 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4038 purple_value_new(PURPLE_TYPE_BOOLEAN), 4,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4039 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION),
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4040 purple_value_new(PURPLE_TYPE_STRING), /* type */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4041 purple_value_new(PURPLE_TYPE_STRING), /* from */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4042 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
4043 }
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
4044
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4045 void jabber_plugin_uninit(PurplePlugin *plugin)
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
4046 {
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4047 g_return_if_fail(plugin_ref > 0);
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4048
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4049 purple_signals_unregister_by_instance(plugin);
28893
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28891
diff changeset
4050 purple_plugin_ipc_unregister_all(plugin);
26952
92565c8e1e3a 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 <paul@darkrain42.org>
parents: 26885
diff changeset
4051
29958
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
4052 jabber_unregister_commands(plugin);
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29957
diff changeset
4053
29957
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4054 --plugin_ref;
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4055 if (plugin_ref == 0)
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29956
diff changeset
4056 jabber_do_uninit();
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
4057 }