annotate libpurple/protocols/jabber/jabber.c @ 29858:2829dd1cc118

jabber: I don't see how this is possible, and it looks like an error to me.
author Paul Aurich <paul@darkrain42.org>
date Sat, 01 May 2010 17:21:21 +0000
parents 552616f49f94
children 3a5194c70b38
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /*
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2 * purple - Jabber Protocol Plugin
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 *
28048
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 27981
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: 27981
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: 27981
diff changeset
6 * source distribution.
15373
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
19681
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
15373
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"
26982
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
28 #include "core.h"
15373
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"
15889
87ea711b9781 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents: 15822
diff changeset
31 #include "conversation.h"
15373
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"
25353
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 24890
diff changeset
34 #include "imgstore.h"
15373
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"
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
38 #include "privacy.h"
15373
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"
25686
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25685
diff changeset
43 #include "status.h"
15373
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"
15889
87ea711b9781 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents: 15822
diff changeset
46 #include "xmlnode.h"
15373
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"
25985
c4fd9222dda1 propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
parents: 25952 25678
diff changeset
50 #include "caps.h"
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 #include "chat.h"
23777
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23180
diff changeset
52 #include "data.h"
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 #include "disco.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 #include "google.h"
28534
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
55 #include "ibb.h"
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 #include "iq.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
57 #include "jutil.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 #include "message.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59 #include "parser.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
60 #include "presence.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
61 #include "jabber.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
62 #include "roster.h"
17835
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
63 #include "ping.h"
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64 #include "si.h"
29468
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
65 #include "usermood.h"
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 #include "xdata.h"
17834
a75079eae085 added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents: 17833
diff changeset
67 #include "pep.h"
17883
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: 17881
diff changeset
68 #include "adhoccommands.h"
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69
24938
bd598b606ca4 Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23911
diff changeset
70 #include "jingle/jingle.h"
bd598b606ca4 Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23911
diff changeset
71 #include "jingle/rtp.h"
23777
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23180
diff changeset
72
29492
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29473
diff changeset
73 #define PING_TIMEOUT 60
29772
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
74 /* 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: 29755
diff changeset
75 * anything in the last 120 seconds
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
76 */
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
77 #define DEFAULT_INACTIVITY_TIME 120
29492
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29473
diff changeset
78
21538
4e5bef6c3379 Fix #3669
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21418
diff changeset
79 GList *jabber_features = NULL;
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
80 GList *jabber_identities = NULL;
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
81
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
82 static GHashTable *jabber_cmds = NULL; /* PurplePlugin * => GSList of ids */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
84 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: 29556
diff changeset
85
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
86 static void jabber_unregister_account_cb(JabberStream *js);
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
87 static void try_srv_connect(JabberStream *js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89 static void jabber_stream_init(JabberStream *js)
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 char *open_stream;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92
29602
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 29601
diff changeset
93 if (js->stream_id) {
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 29601
diff changeset
94 g_free(js->stream_id);
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 29601
diff changeset
95 js->stream_id = NULL;
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 29601
diff changeset
96 }
6e598ca344b3 jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents: 29601
diff changeset
97
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
98 open_stream = g_strdup_printf("<stream:stream to='%s' "
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
99 "xmlns='" NS_XMPP_CLIENT "' "
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
100 "xmlns:stream='" NS_XMPP_STREAMS "' "
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
101 "version='1.0'>",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
102 js->user->domain);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 /* setup the parser fresh for each stream */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 jabber_parser_setup(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 jabber_send_raw(js, open_stream, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
106 js->reinit = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107 g_free(open_stream);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110 static void
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
111 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: 26464
diff changeset
112 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: 26464
diff changeset
113 xmlnode *packet, gpointer data)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
114 {
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
115 if (type == JABBER_IQ_RESULT) {
25673
af2b883df9a3 Wait until receiving the roster to tell the core we're logged in
Paul Aurich <paul@darkrain42.org>
parents: 25672
diff changeset
116 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
117 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
118 jabber_unregister_account_cb(js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
119 } else {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
120 purple_connection_error_reason(js->gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
121 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
122 ("Error initializing session"));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
124 }
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 static void jabber_session_init(JabberStream *js)
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 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
129 xmlnode *session;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
130
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
131 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
132
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133 session = xmlnode_new_child(iq->node, "session");
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
134 xmlnode_set_namespace(session, NS_XMPP_SESSION);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
135
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
136 jabber_iq_send(iq);
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
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
139 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: 26464
diff changeset
140 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: 26464
diff changeset
141 xmlnode *packet, gpointer data)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
142 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
143 xmlnode *bind;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
145 if (type == JABBER_IQ_RESULT &&
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
146 (bind = xmlnode_get_child_with_namespace(packet, "bind", NS_XMPP_BIND))) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
147 xmlnode *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
148 char *full_jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
149 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
150 jabber_id_free(js->user);
27793
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 27787
diff changeset
151
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 27787
diff changeset
152 js->user = jabber_id_new(full_jid);
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 27787
diff changeset
153 if (js->user == NULL) {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
154 purple_connection_error_reason(js->gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
155 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
156 _("Invalid response from server"));
27793
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 27787
diff changeset
157 g_free(full_jid);
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 27787
diff changeset
158 return;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159 }
27793
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 27787
diff changeset
160
27794
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 27793
diff changeset
161 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: 27793
diff changeset
162 js->user_jb->subscription |= JABBER_SUB_BOTH;
24216
a61c017d3a99 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents: 24058
diff changeset
163
a61c017d3a99 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents: 24058
diff changeset
164 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: 24058
diff changeset
165
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
166 g_free(full_jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
167 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
168 } else {
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
169 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
170 char *msg = jabber_parse_error(js, packet, &reason);
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
171 purple_connection_error_reason(js->gc, reason, msg);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
172 g_free(msg);
29734
b00abe5ec15e jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <paul@darkrain42.org>
parents: 29696
diff changeset
173
b00abe5ec15e jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <paul@darkrain42.org>
parents: 29696
diff changeset
174 return;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
175 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
176
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
177 jabber_session_init(js);
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
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
180 static char *jabber_prep_resource(char *input) {
25463
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25432
diff changeset
181 char hostname[256], /* current hostname */
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25432
diff changeset
182 *dot = NULL;
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
183
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
184 /* Empty resource == don't send any */
24869
41e69c65b006 Slightly modified version of a fix fqueze proposed for a crash with the empty
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24855
diff changeset
185 if (input == NULL || *input == '\0')
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
186 return NULL;
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
187
24568
6b9552b09de0 Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24563
diff changeset
188 if (strstr(input, "__HOSTNAME__") == NULL)
24585
fb5a11ec8be6 darkrain again
Ka-Hing Cheung <khc@hxbc.us>
parents: 24568
diff changeset
189 return g_strdup(input);
24568
6b9552b09de0 Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24563
diff changeset
190
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
191 /* Replace __HOSTNAME__ with hostname */
24560
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24556
diff changeset
192 if (gethostname(hostname, sizeof(hostname) - 1)) {
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24556
diff changeset
193 purple_debug_warning("jabber", "gethostname: %s\n", g_strerror(errno));
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24556
diff changeset
194 /* 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: 24556
diff changeset
195 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: 24556
diff changeset
196 glibc 2.2+ would still fill the buffer with partial
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24556
diff changeset
197 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: 24556
diff changeset
198 instead
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24556
diff changeset
199 */
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
200 strcpy(hostname, "localhost");
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
201 }
24560
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24556
diff changeset
202 hostname[sizeof(hostname) - 1] = '\0';
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
203
25463
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25432
diff changeset
204 /* 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: 25432
diff changeset
205 * 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: 25432
diff changeset
206 * whole FQDN in the hostname */
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25432
diff changeset
207 if((dot = strchr(hostname, '.')))
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25432
diff changeset
208 dot = '\0';
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25432
diff changeset
209
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
210 return purple_strreplace(input, "__HOSTNAME__", hostname);
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
211 }
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
212
25049
f775f6021654 * using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25044
diff changeset
213 void jabber_stream_features_parse(JabberStream *js, xmlnode *packet)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
215 if(xmlnode_get_child(packet, "starttls")) {
28327
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: 28314
diff changeset
216 if(jabber_process_starttls(js, packet)) {
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: 28314
diff changeset
217 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218 return;
28327
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: 28314
diff changeset
219 }
28515
4fd0baa32a9e jabber: Fix a few places where the default for require_tls was wrong.
Paul Aurich <paul@darkrain42.org>
parents: 28513
diff changeset
220 } else if(purple_account_get_bool(js->gc->account, "require_tls", JABBER_DEFAULT_REQUIRE_TLS) && !jabber_stream_is_ssl(js)) {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
221 purple_connection_error_reason(js->gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
222 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
223 _("You require encryption, but it is not available on this server."));
17896
a8420fd18545 Added an option to require SSL or TLS when connecting to an XMPP server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17894
diff changeset
224 return;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
225 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
227 if(js->registration) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228 jabber_register_start(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229 } else if(xmlnode_get_child(packet, "mechanisms")) {
28327
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: 28314
diff changeset
230 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231 jabber_auth_start(js, packet);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232 } else if(xmlnode_get_child(packet, "bind")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
233 xmlnode *bind, *resource;
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
234 char *requested_resource;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
235 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
236 bind = xmlnode_new_child(iq->node, "bind");
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
237 xmlnode_set_namespace(bind, NS_XMPP_BIND);
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
238 requested_resource = jabber_prep_resource(js->user->resource);
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
239
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
240 if (requested_resource != NULL) {
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
241 resource = xmlnode_new_child(bind, "resource");
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
242 xmlnode_insert_data(resource, requested_resource, -1);
24666
641fe4c2b2a5 Use g_free instead of free.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24585
diff changeset
243 g_free(requested_resource);
24555
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24464
diff changeset
244 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
245
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246 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
247
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248 jabber_iq_send(iq);
28760
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28758
diff changeset
249 } else if (xmlnode_get_child_with_namespace(packet, "ver", NS_ROSTER_VERSIONING)) {
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 28758
diff changeset
250 js->server_caps |= JABBER_CAP_ROSTER_VERSIONING;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251 } 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
252 /* 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
253 * 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
254 * 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
255 * connecting to an XMPP server. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
256 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
28696
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28517
diff changeset
257 jabber_auth_start_old(js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
260
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
261 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
262 {
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
263 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
264 char *msg = jabber_parse_error(js, packet, &reason);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
265
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
266 purple_connection_error_reason(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
267
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
268 g_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
269 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
270
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
271 static void tls_init(JabberStream *js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
272
17894
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: 17893
diff changeset
273 void jabber_process_packet(JabberStream *js, xmlnode **packet)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274 {
29601
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29573
diff changeset
275 const char *name;
15917
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15916
diff changeset
276 const char *xmlns;
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15916
diff changeset
277
28517
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28515
diff changeset
278 purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-receiving-xmlnode", js->gc, packet);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
279
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
280 /* if the signal leaves us with a null packet, we're done */
17894
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: 17893
diff changeset
281 if(NULL == *packet)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283
29601
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29573
diff changeset
284 name = (*packet)->name;
17894
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: 17893
diff changeset
285 xmlns = xmlnode_get_namespace(*packet);
15917
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15916
diff changeset
286
17894
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: 17893
diff changeset
287 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: 17893
diff changeset
288 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: 17893
diff changeset
289 } 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: 17893
diff changeset
290 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: 17893
diff changeset
291 } 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: 17893
diff changeset
292 jabber_message_parse(js, *packet);
29601
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29573
diff changeset
293 } 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: 29573
diff changeset
294 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: 29573
diff changeset
295 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: 29573
diff changeset
296 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: 29573
diff changeset
297 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: 29573
diff changeset
298 } 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: 29573
diff changeset
299 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: 29573
diff changeset
300 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: 29573
diff changeset
301 else {
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29573
diff changeset
302 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: 29573
diff changeset
303 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: 29573
diff changeset
304 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: 29573
diff changeset
305 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: 29573
diff changeset
306 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: 29573
diff changeset
307 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: 29573
diff changeset
308 }
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29573
diff changeset
309 } 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: 29573
diff changeset
310 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: 29573
diff changeset
311 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: 29573
diff changeset
312 else {
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29573
diff changeset
313 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: 29573
diff changeset
314 tls_init(js);
f5f3c5134eb7 jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents: 29573
diff changeset
315 /* 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: 29573
diff changeset
316 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
317 } else {
28513
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28512
diff changeset
318 purple_debug_warning("jabber", "Unknown packet: %s\n", (*packet)->name);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
319 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
320 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
321
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
322 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
323 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
324 int ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
325
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
326 if (js->gsc)
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
327 ret = purple_ssl_write(js->gsc, data, len);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
328 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
329 ret = write(js->fd, data, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
330
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
331 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
332 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
333
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
334 static void jabber_send_cb(gpointer data, gint source, PurpleInputCondition cond)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
335 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
336 JabberStream *js = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
337 int ret, writelen;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
338 writelen = purple_circ_buffer_get_max_read(js->write_buffer);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
340 if (writelen == 0) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
341 purple_input_remove(js->writeh);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
342 js->writeh = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
343 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
345
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
346 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
347
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
348 if (ret < 0 && errno == EAGAIN)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
349 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
350 else if (ret <= 0) {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
351 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
352 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
353 purple_connection_error_reason(js->gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
354 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
355 g_free(tmp);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
356 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
357 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
358
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
359 purple_circ_buffer_mark_read(js->write_buffer, ret);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
360 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
361
23376
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
362 static gboolean do_jabber_send_raw(JabberStream *js, const char *data, int len)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
363 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
364 int ret;
23376
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
365 gboolean success = TRUE;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
366
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
367 if (len == -1)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
368 len = strlen(data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
369
29772
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
370 if (js->state == JABBER_STREAM_CONNECTED)
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
371 jabber_stream_restart_inactivity_timer(js);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
372
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
373 if (js->writeh == 0)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
374 ret = jabber_do_send(js, data, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
375 else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
376 ret = -1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
377 errno = EAGAIN;
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
23376
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
380 if (ret < 0 && errno != EAGAIN) {
28941
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
381 PurpleAccount *account = purple_connection_get_account(js->gc);
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
382 /*
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
383 * 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: 28901
diff changeset
384 * 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: 28901
diff changeset
385 * (for some UIs) would mask the first.
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
386 */
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
387 if (!account->disconnecting) {
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
388 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: 28901
diff changeset
389 g_strerror(errno));
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
390 purple_connection_error_reason(js->gc,
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
391 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
392 g_free(tmp);
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
393 }
9cdf9bc6c1ed jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents: 28901
diff changeset
394
23376
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
395 success = FALSE;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
396 } else if (ret < len) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
397 if (ret < 0)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
398 ret = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
399 if (js->writeh == 0)
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
400 js->writeh = purple_input_add(
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
401 js->gsc ? js->gsc->fd : js->fd,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
402 PURPLE_INPUT_WRITE, jabber_send_cb, js);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
403 purple_circ_buffer_append(js->write_buffer,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
404 data + ret, len - ret);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405 }
23376
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
406
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
407 return success;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
408 }
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
409
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
410 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: 23285
diff changeset
411 {
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
412 /* because printing a tab to debug every minute gets old */
24890
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
413 if(strcmp(data, "\t")) {
28512
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28438
diff changeset
414 const char *username;
24890
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
415 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: 24869
diff changeset
416
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
417 /* Because debug logs with plaintext passwords make me sad */
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
418 if(js->state != JABBER_STREAM_CONNECTED &&
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
419 /* 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: 24869
diff changeset
420 (((tag_start = strstr(data, "<auth ")) &&
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
421 strstr(data, "xmlns='" NS_XMPP_SASL "'")) ||
24890
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
422 ((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: 24869
diff changeset
423 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: 24869
diff changeset
424 (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: 24869
diff changeset
425 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: 24869
diff changeset
426 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: 24869
diff changeset
427
25599
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25587
diff changeset
428 /* Better to print out some wacky debugging than crash
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25587
diff changeset
429 * due to a plugin sending bad xml */
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25587
diff changeset
430 if (tag_end == NULL)
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25587
diff changeset
431 tag_end = tag_start;
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25587
diff changeset
432
24890
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
433 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: 24869
diff changeset
434
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
435 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: 24869
diff changeset
436 *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: 24869
diff changeset
437 }
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
438
28512
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28438
diff changeset
439 username = purple_connection_get_display_name(js->gc);
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28438
diff changeset
440 if (!username)
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28438
diff changeset
441 username = purple_account_get_username(purple_connection_get_account(js->gc));
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28438
diff changeset
442
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28438
diff changeset
443 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: 28438
diff changeset
444 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: 28438
diff changeset
445 text ? text : data,
24890
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
446 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: 24869
diff changeset
447 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: 24869
diff changeset
448
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24869
diff changeset
449 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: 24869
diff changeset
450 }
23376
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
451
28517
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28515
diff changeset
452 purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-sending-text", js->gc, &data);
23376
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
453 if (data == NULL)
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
454 return;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
455
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
456 /* 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: 23285
diff changeset
457 * splitting it on the maximum buffer length negotiated */
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
458 #ifdef HAVE_CYRUS_SASL
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
459 if (js->sasl_maxbuf>0) {
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
460 int pos = 0;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
461
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
462 if (!js->gsc && js->fd<0)
29858
2829dd1cc118 jabber: I don't see how this is possible, and it looks like an error to me.
Paul Aurich <paul@darkrain42.org>
parents: 29855
diff changeset
463 g_return_if_reached();
23376
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
464
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
465 if (len == -1)
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
466 len = strlen(data);
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
467
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
468 while (pos < len) {
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
469 int towrite;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
470 const char *out;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
471 unsigned olen;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
472
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
473 towrite = MIN((len - pos), js->sasl_maxbuf);
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
474
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
475 sasl_encode(js->sasl, &data[pos], towrite, &out, &olen);
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
476 pos += towrite;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
477
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
478 if (!do_jabber_send_raw(js, out, olen))
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
479 break;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
480 }
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
481 return;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
482 }
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
483 #endif
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23285
diff changeset
484
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
485 if (len == -1)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
486 len = strlen(data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
487
27787
53f0956f76dc jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents: 27778
diff changeset
488 if (js->bosh)
26448
d4af753e0e33 Pass all messages to BOSH as text, so they pass through the sending-text
Paul Aurich <paul@darkrain42.org>
parents: 26447
diff changeset
489 jabber_bosh_connection_send_raw(js->bosh, data);
25182
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25181
diff changeset
490 else
25125
907ca9a36fe0 explicit merge of '714a7c7f903d11c96ffade34966121da549d998f'
Paul Aurich <paul@darkrain42.org>
parents: 25050 25124
diff changeset
491 do_jabber_send_raw(js, data, len);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
492 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
493
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
494 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
495 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
496 JabberStream *js = (JabberStream*)gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
497 jabber_send_raw(js, buf, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
498 return len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
499 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
500
27006
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27004
diff changeset
501 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: 27004
diff changeset
502 gpointer unused)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
503 {
27663
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27656
diff changeset
504 JabberStream *js;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
505 char *txt;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
506 int len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
507
27006
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27004
diff changeset
508 if (NULL == packet)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
509 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
510
28640
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28592
diff changeset
511 if (!PURPLE_CONNECTION_IS_VALID(pc))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
512 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
513
27663
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27656
diff changeset
514 js = purple_connection_get_protocol_data(pc);
28640
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28592
diff changeset
515
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28592
diff changeset
516 if (NULL == js)
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28592
diff changeset
517 return;
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28592
diff changeset
518
27787
53f0956f76dc jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents: 27778
diff changeset
519 if (js->bosh)
27663
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27656
diff changeset
520 if (g_str_equal((*packet)->name, "message") ||
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27656
diff changeset
521 g_str_equal((*packet)->name, "iq") ||
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27656
diff changeset
522 g_str_equal((*packet)->name, "presence"))
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
523 xmlnode_set_namespace(*packet, NS_XMPP_CLIENT);
27006
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27004
diff changeset
524 txt = xmlnode_to_str(*packet, &len);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
525 jabber_send_raw(js, txt, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
526 g_free(txt);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
527 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
528
27006
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27004
diff changeset
529 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
530 {
28517
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28515
diff changeset
531 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
532 }
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
533
25640
42dd7e591031 Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents: 25412
diff changeset
534 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
535 {
21973
966f98d4b04b Masca noticed that dc6923294f5f33ff7a52a998e1b9e9ad47be0211 made jabber.c not
Will Thompson <will.thompson@collabora.co.uk>
parents: 21964
diff changeset
536 JabberStream *js = gc->proto_data;
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
537 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
538 _("Ping timed out"));
27069
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27055
diff changeset
539 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
540 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
541 }
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
542
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
543 void jabber_keepalive(PurpleConnection *gc)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
544 {
29492
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29473
diff changeset
545 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: 29473
diff changeset
546 time_t now = time(NULL);
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29473
diff changeset
547
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29473
diff changeset
548 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: 29473
diff changeset
549 js->last_ping = now;
0d3151a41134 jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents: 29473
diff changeset
550
26917
6b0e150f2276 Stop trying to be clever with XMPP keepalive pings.
Paul Aurich <paul@darkrain42.org>
parents: 26874
diff changeset
551 jabber_keepalive_ping(js);
25640
42dd7e591031 Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents: 25412
diff changeset
552 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: 25412
diff changeset
553 (GSourceFunc)(jabber_keepalive_timeout), gc);
22459
8ec6ac1b9e26 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evan.s@dreskin.net>
parents: 22443
diff changeset
554 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
555 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
556
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
557 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
558 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
559 PurpleInputCondition cond)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
560 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
561 PurpleConnection *gc = data;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
562 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
563 int len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
564 static char buf[4096];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
565
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
566 /* TODO: It should be possible to make this check unnecessary */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
567 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
568 purple_ssl_close(gsc);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
569 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
570 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
571
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
572 while((len = purple_ssl_read(gsc, buf, sizeof(buf) - 1)) > 0) {
22149
252b96b6a32c Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@gmail.com>
parents: 22097
diff changeset
573 gc->last_received = time(NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
574 buf[len] = '\0';
28513
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28512
diff changeset
575 purple_debug_info("jabber", "Recv (ssl)(%d): %s\n", len, buf);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
576 jabber_parser_process(js, buf, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
577 if(js->reinit)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
578 jabber_stream_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
579 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
580
23396
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23389
diff changeset
581 if(len < 0 && errno == EAGAIN)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
582 return;
23396
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23389
diff changeset
583 else {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
584 gchar *tmp;
23396
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23389
diff changeset
585 if (len == 0)
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
586 tmp = g_strdup_printf(_("Server closed the connection"));
23396
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23389
diff changeset
587 else
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
588 tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
589 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
590 purple_connection_error_reason(js->gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
591 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
592 g_free(tmp);
23396
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23389
diff changeset
593 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
594 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
595
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
596 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
597 jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
598 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
599 PurpleConnection *gc = data;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
600 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
601 int len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
602 static char buf[4096];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
603
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
604 if(!PURPLE_CONNECTION_IS_VALID(gc))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
605 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
606
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
607 if((len = read(js->fd, buf, sizeof(buf) - 1)) > 0) {
22149
252b96b6a32c Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@gmail.com>
parents: 22097
diff changeset
608 gc->last_received = time(NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
609 #ifdef HAVE_CYRUS_SASL
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
610 if (js->sasl_maxbuf>0) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611 const char *out;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
612 unsigned int olen;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
613 sasl_decode(js->sasl, buf, len, &out, &olen);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
614 if (olen>0) {
28513
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28512
diff changeset
615 purple_debug_info("jabber", "RecvSASL (%u): %s\n", olen, out);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
616 jabber_parser_process(js,out,olen);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
617 if(js->reinit)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
618 jabber_stream_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
619 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
620 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
621 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
622 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
623 buf[len] = '\0';
28513
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28512
diff changeset
624 purple_debug_info("jabber", "Recv (%d): %s\n", len, buf);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
625 jabber_parser_process(js, buf, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
626 if(js->reinit)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
627 jabber_stream_init(js);
23396
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23389
diff changeset
628 } else if(len < 0 && errno == EAGAIN) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
629 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
630 } else {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
631 gchar *tmp;
23396
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23389
diff changeset
632 if (len == 0)
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
633 tmp = g_strdup_printf(_("Server closed the connection"));
23396
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23389
diff changeset
634 else
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
635 tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
636 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
637 purple_connection_error_reason(js->gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
638 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
639 g_free(tmp);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
640 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
641 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
642
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
643 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
644 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
645 PurpleInputCondition cond)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
646 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
647 PurpleConnection *gc = data;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
648 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
649
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
650 /* TODO: It should be possible to make this check unnecessary */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
651 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
652 purple_ssl_close(gsc);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
653 return;
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: 19723
diff changeset
654 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
655
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
656 js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
657
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
658 if(js->state == JABBER_STREAM_CONNECTING)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
659 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
660 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
661 purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc);
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
662
17879
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: 17876
diff changeset
663 /* 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: 17876
diff changeset
664 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
665 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
666
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
667 static void
27349
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27347
diff changeset
668 txt_resolved_cb(GList *responses, gpointer data)
25038
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25035
diff changeset
669 {
25181
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25180
diff changeset
670 JabberStream *js = data;
26590
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
671
25180
1516525c86fa Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents: 25179
diff changeset
672 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: 25179
diff changeset
673
26590
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
674 if (responses == NULL) {
28802
20f4bce8894d jabber: Print a better error message when all connection methods fail.
Paul Aurich <paul@darkrain42.org>
parents: 28760
diff changeset
675 purple_debug_warning("jabber", "Unable to find alternative XMPP connection "
28900
ddad759dc05b jabber: Newline at the end of this message.
Paul Aurich <paul@darkrain42.org>
parents: 28802
diff changeset
676 "methods after failing to connect directly.\n");
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
677 purple_connection_error_reason(js->gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
678 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
28802
20f4bce8894d jabber: Print a better error message when all connection methods fail.
Paul Aurich <paul@darkrain42.org>
parents: 28760
diff changeset
679 _("Unable to connect"));
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
680 return;
25038
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25035
diff changeset
681 }
26590
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
682
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
683 while (responses) {
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
684 PurpleTxtResponse *resp = responses->data;
25039
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25038
diff changeset
685 gchar **token;
26590
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
686 token = g_strsplit(purple_txt_response_get_content(resp), "=", 2);
25039
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25038
diff changeset
687 if (!strcmp(token[0], "_xmpp-client-xbosh")) {
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25038
diff changeset
688 purple_debug_info("jabber","Found alternative connection method using %s at %s.\n", token[0], token[1]);
25181
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25180
diff changeset
689 js->bosh = jabber_bosh_connection_init(js, token[1]);
25039
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25038
diff changeset
690 g_strfreev(token);
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25038
diff changeset
691 break;
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25038
diff changeset
692 }
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25038
diff changeset
693 g_strfreev(token);
26590
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
694 purple_txt_response_destroy(resp);
27349
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27347
diff changeset
695 responses = g_list_delete_link(responses, responses);
25038
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25035
diff changeset
696 }
26590
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
697
25181
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25180
diff changeset
698 if (js->bosh) {
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25180
diff changeset
699 jabber_bosh_connection_connect(js->bosh);
25042
1cbe5a9f6efb * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25039
diff changeset
700 } else {
1cbe5a9f6efb * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25039
diff changeset
701 purple_debug_info("jabber","Didn't find an alternative connection method.\n");
1cbe5a9f6efb * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25039
diff changeset
702 }
26589
400f74b95c0e First crack at Win32 TXT DNS query code and don't leak the PurpleTxtResponses
Paul Aurich <paul@darkrain42.org>
parents: 26588
diff changeset
703
26590
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
704 if (responses) {
27349
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27347
diff changeset
705 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: 27347
diff changeset
706 g_list_free(responses);
26590
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26589
diff changeset
707 }
25038
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25035
diff changeset
708 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
709
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
710 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
711 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
712 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
713 PurpleConnection *gc = data;
28901
4189f9e1627b jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents: 28900
diff changeset
714 JabberStream *js = purple_connection_get_protocol_data(gc);
15373
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 if (source < 0) {
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
717 if (js->srv_rec != NULL) {
28901
4189f9e1627b jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents: 28900
diff changeset
718 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record or connecting directly.\n", error);
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
719 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: 23396
diff changeset
720 } else {
28901
4189f9e1627b jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents: 28900
diff changeset
721 purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain);
27608
6f455daf3776 ASCII-ize the TXT query, too.
Paul Aurich <paul@darkrain42.org>
parents: 27607
diff changeset
722 js->srv_query_data = purple_txt_resolve("_xmppconnect",
27635
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27613
diff changeset
723 js->user->domain, txt_resolved_cb, js);
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
724 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
725 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
726 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
727
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
728 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: 23396
diff changeset
729 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: 23396
diff changeset
730
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
731 js->fd = source;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
732
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
733 if(js->state == JABBER_STREAM_CONNECTING)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
734 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
735
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
736 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
737 gc->inpa = purple_input_add(js->fd, PURPLE_INPUT_READ, jabber_recv_cb, gc);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
738 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
739
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
740 static void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
741 jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
742 gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
743 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
744 PurpleConnection *gc = data;
15606
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: 15497
diff changeset
745 JabberStream *js;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
746
15606
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: 15497
diff changeset
747 /* If the connection is already disconnected, we don't need to do anything else */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
748 if(!PURPLE_CONNECTION_IS_VALID(gc))
15606
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: 15497
diff changeset
749 return;
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: 15497
diff changeset
750
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: 15497
diff changeset
751 js = gc->proto_data;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
752 js->gsc = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
753
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
754 purple_connection_ssl_error (gc, error);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
755 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
756
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
757 static void tls_init(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
758 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
759 purple_input_remove(js->gc->inpa);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
760 js->gc->inpa = 0;
18929
67cb28c0ec89 applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18163
diff changeset
761 js->gsc = purple_ssl_connect_with_host_fd(js->gc->account, 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
762 jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc);
27656
96c38fe2cb00 Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <paul@darkrain42.org>
parents: 27635
diff changeset
763 /* 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: 27635
diff changeset
764 js->fd = -1;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
765 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
766
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
767 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: 23396
diff changeset
768 gboolean fatal_failure)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
769 {
22337
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
770 /* 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
771 * 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
772 * 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
773 * in connect server */
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
774 g_free(js->serverFQDN);
22337
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
775 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
776 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
777 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
778 js->serverFQDN = g_strdup(host);
15765
51dd9ae01585 pass the correct domain to cyrus sasl (sf patch 1663064)
Nathan Walp <nwalp@pidgin.im>
parents: 15728
diff changeset
779
27613
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27608
diff changeset
780 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: 27608
diff changeset
781 host, port, jabber_login_callback, js->gc) == NULL) {
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
782 if (fatal_failure) {
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
783 purple_connection_error_reason(js->gc,
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
784 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27381
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27349
diff changeset
785 _("Unable to connect"));
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
786 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
787
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
788 return FALSE;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
789 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
790
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
791 return TRUE;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
792 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
793
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
794 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: 23396
diff changeset
795 {
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
796 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: 23396
diff changeset
797 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: 23396
diff changeset
798 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: 23396
diff changeset
799 return;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
800 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
801
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
802 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: 23396
diff changeset
803 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: 23396
diff changeset
804
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
805 /* 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: 23396
diff changeset
806 jabber_login_connect(js, js->user->domain, js->user->domain,
27613
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27608
diff changeset
807 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222),
27635
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27613
diff changeset
808 TRUE);
15373
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
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
811 static void srv_resolved_cb(PurpleSrvResponse *resp, int results, gpointer data)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
812 {
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
813 JabberStream *js = data;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
814 js->srv_query_data = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
815
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
816 if(results) {
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
817 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: 23396
diff changeset
818 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: 23396
diff changeset
819 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: 23396
diff changeset
820 try_srv_connect(js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
821 } else {
16996
37a2d6eadd34 fix #699
Nathan Walp <nwalp@pidgin.im>
parents: 16952
diff changeset
822 jabber_login_connect(js, js->user->domain, js->user->domain,
27613
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27608
diff changeset
823 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222),
27635
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27613
diff changeset
824 TRUE);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
825 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
826 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
827
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
828 static JabberStream *
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
829 jabber_stream_new(PurpleAccount *account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
830 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
831 PurpleConnection *gc = purple_account_get_connection(account);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
832 JabberStream *js;
25686
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25685
diff changeset
833 PurplePresence *presence;
27607
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
834 gchar *user;
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
835 gchar *slash;
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
836
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
837 js = gc->proto_data = g_new0(JabberStream, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
838 js->gc = gc;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
839 js->fd = -1;
27607
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
840
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
841 user = g_strdup(purple_account_get_username(account));
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
842 /* jabber_id_new doesn't accept "user@domain/" as valid */
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
843 slash = strchr(user, '/');
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
844 if (slash && *(slash + 1) == '\0')
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
845 *slash = '\0';
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
846 js->user = jabber_id_new(user);
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
847
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
848 if (!js->user) {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
849 purple_connection_error_reason(gc,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
850 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
851 _("Invalid XMPP ID"));
29754
8217f783463e jabber: --leaks
Paul Aurich <paul@darkrain42.org>
parents: 29746
diff changeset
852 g_free(user);
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
853 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
854 return NULL;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
855 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
856
29696
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 29630
diff changeset
857 if (!js->user->node || *(js->user->node) == '\0') {
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 29630
diff changeset
858 purple_connection_error_reason(gc,
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 29630
diff changeset
859 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: 29630
diff changeset
860 _("Invalid XMPP ID. Username portion must be set."));
29754
8217f783463e jabber: --leaks
Paul Aurich <paul@darkrain42.org>
parents: 29746
diff changeset
861 g_free(user);
29696
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 29630
diff changeset
862 /* Destroying the connection will free the JabberStream */
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 29630
diff changeset
863 return NULL;
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 29630
diff changeset
864 }
08957bb38e30 jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents: 29630
diff changeset
865
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
866 if (!js->user->domain || *(js->user->domain) == '\0') {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
867 purple_connection_error_reason(gc,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
868 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
869 _("Invalid XMPP ID. Domain must be set."));
29754
8217f783463e jabber: --leaks
Paul Aurich <paul@darkrain42.org>
parents: 29746
diff changeset
870 g_free(user);
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
871 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
872 return NULL;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
873 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
874
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
875 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
876 g_free, (GDestroyNotify)jabber_buddy_free);
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
877
27794
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 27793
diff changeset
878 js->user_jb = jabber_buddy_find(js, user, TRUE);
27607
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27599
diff changeset
879 g_free(user);
27794
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 27793
diff changeset
880 if (!js->user_jb) {
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
881 /* This basically *can't* fail, but for good measure... */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
882 purple_connection_error_reason(gc,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
883 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
884 _("Invalid XMPP ID"));
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
885 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
886 g_return_val_if_reached(NULL);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
887 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
888
27794
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 27793
diff changeset
889 js->user_jb->subscription |= JABBER_SUB_BOTH;
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
890
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
891 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: 27527
diff changeset
892 g_free, g_free);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
893 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
894 g_free, (GDestroyNotify)jabber_chat_free);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
895 js->next_id = g_random_int();
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
896 js->write_buffer = purple_circ_buffer_new(512);
21977
cacc01b50a23 Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <stu@nosnilmot.com>
parents: 21973
diff changeset
897 js->old_length = 0;
27069
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27055
diff changeset
898 js->keepalive_timeout = 0;
29772
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
899 js->max_inactivity = DEFAULT_INACTIVITY_TIME;
25993
6d7d360687bd Jabber: Default protocol version to 1.0.
Paul Aurich <paul@darkrain42.org>
parents: 25987
diff changeset
900 /* Set the default protocol version to 1.0. Overridden in parser.c. */
29561
618c4165d4f8 jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents: 29560
diff changeset
901 js->protocol_version.major = 1;
618c4165d4f8 jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents: 29560
diff changeset
902 js->protocol_version.minor = 0;
23798
16543025aed1 Moved jingle.c global variable "sessions" into JabberStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23797
diff changeset
903 js->sessions = NULL;
26080
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26063
diff changeset
904 js->stun_ip = NULL;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26063
diff changeset
905 js->stun_port = 0;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26063
diff changeset
906 js->stun_query = NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
907
25685
a92df60855f3 Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents: 25255
diff changeset
908 /* 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: 25255
diff changeset
909 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: 25255
diff changeset
910 sense to do this when registering a new account... */
25686
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25685
diff changeset
911 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: 25685
diff changeset
912 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: 25685
diff changeset
913 js->idle = purple_presence_get_idle_time(presence);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
914
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
915 return js;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
916 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
917
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
918 static void
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
919 jabber_stream_connect(JabberStream *js)
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
920 {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
921 PurpleConnection *gc = js->gc;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
922 PurpleAccount *account = purple_connection_get_account(gc);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
923 const char *connect_server = purple_account_get_string(account,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
924 "connect_server", "");
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
925 const char *bosh_url = purple_account_get_string(account,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
926 "bosh_url", "");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
927
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
928 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
929
27173
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
930 /* 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: 27137
diff changeset
931 * attached to that choice, though.
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
932 */
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
933 if (*bosh_url) {
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
934 js->bosh = jabber_bosh_connection_init(js, bosh_url);
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
935 if (js->bosh)
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
936 jabber_bosh_connection_connect(js->bosh);
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
937 else {
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
938 purple_connection_error_reason(gc,
25677
7d2e85f78aec Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents: 25676
diff changeset
939 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
27173
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
940 _("Malformed BOSH URL"));
25677
7d2e85f78aec Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents: 25676
diff changeset
941 }
27173
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
942
25179
514051f3b6cf Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents: 25177
diff changeset
943 return;
514051f3b6cf Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents: 25177
diff changeset
944 }
514051f3b6cf Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents: 25177
diff changeset
945
27173
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
946 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: 27137
diff changeset
947
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
948 /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
949 if(purple_account_get_bool(account, "old_ssl", FALSE)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
950 if(purple_ssl_is_supported()) {
27635
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27613
diff changeset
951 js->gsc = purple_ssl_connect(account, js->certificate_CN,
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
952 purple_account_get_int(account, "port", 5223),
27635
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27613
diff changeset
953 jabber_login_callback_ssl, jabber_ssl_connect_failure, gc);
25678
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25677
diff changeset
954 if (!js->gsc) {
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
955 purple_connection_error_reason(gc,
25678
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25677
diff changeset
956 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: 25677
diff changeset
957 _("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: 25677
diff changeset
958 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
959 } else {
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
960 purple_connection_error_reason(gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
961 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
962 _("SSL support unavailable"));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
963 }
25678
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25677
diff changeset
964
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25677
diff changeset
965 return;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
966 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
967
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
968 /* 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
969 * invoke the magic of SRV lookups, to figure out host and port */
25985
c4fd9222dda1 propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
parents: 25952 25678
diff changeset
970 if(connect_server[0]) {
27635
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27613
diff changeset
971 jabber_login_connect(js, js->user->domain, connect_server,
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27613
diff changeset
972 purple_account_get_int(account, "port", 5222), TRUE);
25678
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25677
diff changeset
973 } else {
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25677
diff changeset
974 js->srv_query_data = purple_srv_resolve("xmpp-client",
27635
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27613
diff changeset
975 "tcp", js->user->domain, srv_resolved_cb, js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
976 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
977 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
978
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
979 void
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
980 jabber_login(PurpleAccount *account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
981 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
982 PurpleConnection *gc = purple_account_get_connection(account);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
983 JabberStream *js;
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
984 PurpleStoredImage *image;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
985
23777
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23180
diff changeset
986 gc->flags |= PURPLE_CONNECTION_HTML |
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23180
diff changeset
987 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY;
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
988 js = jabber_stream_new(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
989 if (js == NULL)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
990 return;
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
991
29047
031fd1cd88df jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents: 29022
diff changeset
992 /* 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: 29022
diff changeset
993 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: 29022
diff changeset
994 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: 29022
diff changeset
995
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
996 /*
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
997 * 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: 27527
diff changeset
998 * 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: 27527
diff changeset
999 * server.
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1000 */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1001 image = purple_buddy_icons_find_account_icon(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1002 if (image != NULL) {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1003 js->initial_avatar_hash =
29630
9f59abd49def jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents: 29602
diff changeset
1004 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: 29602
diff changeset
1005 purple_imgstore_get_size(image), "sha1");
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1006 purple_imgstore_unref(image);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1007 }
26080
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26063
diff changeset
1008
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1009 jabber_stream_connect(js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1010 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1011
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1012
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1013 static gboolean
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1014 conn_close_cb(gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1015 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1016 JabberStream *js = data;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1017 PurpleAccount *account = purple_connection_get_account(js->gc);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1018
17876
7a3a66c6530a Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17872
diff changeset
1019 jabber_parser_free(js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1020
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1021 purple_account_disconnect(account);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1022
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1023 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1024 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1025
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1026 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1027 jabber_connection_schedule_close(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1028 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1029 purple_timeout_add(0, conn_close_cb, js);
15373
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1032 static void
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1033 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: 26464
diff changeset
1034 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: 26464
diff changeset
1035 xmlnode *packet, gpointer data)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1036 {
17880
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: 17879
diff changeset
1037 PurpleAccount *account = purple_connection_get_account(js->gc);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1038 char *buf;
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1039 char *to = data;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1040
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1041 if (type == JABBER_IQ_RESULT) {
17880
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: 17879
diff changeset
1042 if(js->registration) {
27284
73c8e1964eef A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27173
diff changeset
1043 buf = g_strdup_printf(_("Registration of %s@%s successful"),
27331
46cc3674b13c Indentation fix.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27069
diff changeset
1044 js->user->node, js->user->domain);
17881
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17880
diff changeset
1045 if(account->registration_cb)
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17880
diff changeset
1046 (account->registration_cb)(account, TRUE, account->registration_cb_user_data);
25467
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1047 } else {
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1048 g_return_if_fail(to != NULL);
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1049 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: 17869
diff changeset
1050 to);
25467
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1051 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1052 purple_notify_info(NULL, _("Registration Successful"),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1053 _("Registration Successful"), buf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1054 g_free(buf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1055 } 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
1056 char *msg = jabber_parse_error(js, packet, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1057
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1058 if(!msg)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1059 msg = g_strdup(_("Unknown Error"));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1060
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1061 purple_notify_error(NULL, _("Registration Failed"),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1062 _("Registration Failed"), msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1063 g_free(msg);
17881
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17880
diff changeset
1064 if(account->registration_cb)
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17880
diff changeset
1065 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1066 }
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1067 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: 17869
diff changeset
1068 if(js->registration)
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1069 jabber_connection_schedule_close(js);
15373
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1072 static void
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1073 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: 26464
diff changeset
1074 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: 26464
diff changeset
1075 xmlnode *packet, gpointer data)
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1076 {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1077 char *buf;
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1078 char *to = data;
25467
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1079
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1080 /* 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: 25463
diff changeset
1081 * 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: 25463
diff changeset
1082 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: 25463
diff changeset
1083
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1084 if (type == JABBER_IQ_RESULT) {
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1085 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
1086 to);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1087 purple_notify_info(NULL, _("Unregistration Successful"),
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1088 _("Unregistration Successful"), buf);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1089 g_free(buf);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1090 } 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
1091 char *msg = jabber_parse_error(js, packet, NULL);
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1092
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1093 if(!msg)
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1094 msg = g_strdup(_("Unknown Error"));
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1095
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1096 purple_notify_error(NULL, _("Unregistration Failed"),
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1097 _("Unregistration Failed"), msg);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1098 g_free(msg);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1099 }
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1100 g_free(to);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1101 }
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1102
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1103 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: 17869
diff changeset
1104 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: 17869
diff changeset
1105 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: 17869
diff changeset
1106 } JabberRegisterCBData;
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1107
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1108 static void
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1109 jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1110 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1111 GList *groups, *flds;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1112 xmlnode *query, *y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1113 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1114 char *username;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1115
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1116 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1117 query = xmlnode_get_child(iq->node, "query");
25467
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1118 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: 25463
diff changeset
1119 xmlnode_set_attrib(iq->node, "to", cbdata->who);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1120
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1121 for(groups = purple_request_fields_get_groups(fields); groups;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1122 groups = groups->next) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1123 for(flds = purple_request_field_group_get_fields(groups->data);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1124 flds; flds = flds->next) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1125 PurpleRequestField *field = flds->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1126 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
1127 if(!strcmp(id,"unregister")) {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1128 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
1129 if(value) {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1130 /* 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
1131 (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
1132 jabber_iq_free(iq);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1133 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
1134 query = xmlnode_get_child(iq->node, "query");
25467
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1135 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: 25463
diff changeset
1136 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
1137 xmlnode_new_child(query, "remove");
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1138
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1139 jabber_iq_set_callback(iq, jabber_unregistration_result_cb, cbdata->who);
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1140
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1141 jabber_iq_send(iq);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1142 g_free(cbdata);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1143 return;
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1144 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1145 } else {
28360
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28327
diff changeset
1146 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: 28327
diff changeset
1147 "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: 28327
diff changeset
1148 NULL};
28314
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: 28292
diff changeset
1149 const char *value = purple_request_field_string_get_value(field);
28360
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28327
diff changeset
1150 int i;
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28327
diff changeset
1151 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: 28327
diff changeset
1152 if (!strcmp(id, ids[i]))
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28327
diff changeset
1153 break;
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28327
diff changeset
1154 }
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28327
diff changeset
1155
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28327
diff changeset
1156 if (!ids[i])
28314
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: 28292
diff changeset
1157 continue;
28360
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28327
diff changeset
1158 y = xmlnode_new_child(query, ids[i]);
28314
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: 28292
diff changeset
1159 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
1160 if(cbdata->js->registration && !strcmp(id, "username")) {
25467
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1161 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
1162 cbdata->js->user->node = g_strdup(value);
28314
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: 28292
diff changeset
1163 }
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1164 if(cbdata->js->registration && !strcmp(id, "password"))
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1165 purple_account_set_password(cbdata->js->gc->account, value);
28314
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: 28292
diff changeset
1166 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1167 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1168 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1169
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1170 if(cbdata->js->registration) {
28314
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: 28292
diff changeset
1171 username = g_strdup_printf("%s@%s%s%s", cbdata->js->user->node, cbdata->js->user->domain,
28731
3bf5dbff753b jabber: Complete the fix for a NULL printf() on registration on Windows. Closes #10420 again.
Paul Aurich <paul@darkrain42.org>
parents: 28650
diff changeset
1172 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: 28650
diff changeset
1173 cbdata->js->user->resource ? cbdata->js->user->resource : "");
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1174 purple_account_set_username(cbdata->js->gc->account, 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
1175 g_free(username);
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1176 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1177
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1178 jabber_iq_set_callback(iq, jabber_registration_result_cb, cbdata->who);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1179
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1180 jabber_iq_send(iq);
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1181 g_free(cbdata);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1182 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1183
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1184 static void
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1185 jabber_register_cancel_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1186 {
17880
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: 17879
diff changeset
1187 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
1188 if(account && cbdata->js->registration) {
17880
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: 17879
diff changeset
1189 if(account->registration_cb)
17881
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17880
diff changeset
1190 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1191 jabber_connection_schedule_close(cbdata->js);
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1192 }
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1193 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: 17869
diff changeset
1194 g_free(cbdata);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1195 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1196
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1197 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
1198 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1199 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1200 JabberIq *iq;
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1201 char *to = data;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1202
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1203 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
1204 query = xmlnode_get_child(iq->node, "query");
25467
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1205 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: 25463
diff changeset
1206 xmlnode_set_attrib(iq->node,"to",to);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1207
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1208 xmlnode_insert_child(query, result);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1209
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1210 jabber_iq_set_callback(iq, jabber_registration_result_cb, to);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1211 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1212 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1213
26612
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1214 static const struct {
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1215 const char *name;
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1216 const char *label;
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1217 } registration_fields[] = {
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1218 { "email", N_("Email") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1219 { "nick", N_("Nickname") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1220 { "first", N_("First name") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1221 { "last", N_("Last name") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1222 { "address", N_("Address") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1223 { "city", N_("City") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1224 { "state", N_("State") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1225 { "zip", N_("Postal code") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1226 { "phone", N_("Phone") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1227 { "url", N_("URL") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1228 { "date", N_("Date") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1229 { NULL, NULL }
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1230 };
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1231
25648
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 25645
diff changeset
1232 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: 25645
diff changeset
1233 const char *id, xmlnode *query)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1234 {
17880
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: 17879
diff changeset
1235 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
1236 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
1237 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
1238 PurpleRequestField *field;
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1239 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
1240 char *instructions;
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1241 JabberRegisterCBData *cbdata;
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1242 gboolean registered = FALSE;
26612
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1243 int i;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1244
25648
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 25645
diff changeset
1245 if (type != JABBER_IQ_RESULT)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1246 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1247
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
1248 if(js->registration) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1249 /* get rid of the login thingy */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1250 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
1251 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1252
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
1253 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
1254 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
1255
17880
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: 17879
diff changeset
1256 if(js->registration) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1257 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
1258 _("Already Registered"), NULL);
17880
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: 17879
diff changeset
1259 if(account->registration_cb)
17881
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17880
diff changeset
1260 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1261 jabber_connection_schedule_close(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1262 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1263 }
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1264 }
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1265
25432
256fbe98f6be The jabber_register_parse function was looking for the <x> node as a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25412
diff changeset
1266 if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) {
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1267 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
1268 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
1269
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
1270 } 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
1271 xmlnode *url;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1272
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
1273 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
1274 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
1275 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
1276 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
1277 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
1278
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
1279 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
1280 js->gc->wants_to_die = TRUE;
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
1281 if(account->registration_cb) /* succeeded, but we have no login info */
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
1282 (account->registration_cb)(account, TRUE, account->registration_cb_user_data);
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
1283 jabber_connection_schedule_close(js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1284 }
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
1285 return;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1286 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1287 }
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
1288 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1289
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
1290 /* as a last resort, use the old jabber:iq:register syntax */
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1291
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
1292 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
1293 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
1294 purple_request_fields_add_group(fields, group);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1295
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1296 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: 26612
diff changeset
1297 char *data = xmlnode_get_data(node);
26247
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1298 if(js->registration)
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1299 field = purple_request_field_string_new("username", _("Username"), data ? data : js->user->node, FALSE);
26247
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1300 else
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1301 field = purple_request_field_string_new("username", _("Username"), data, FALSE);
26247
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1302
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1303 purple_request_field_group_add_field(group, field);
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1304 g_free(data);
26247
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1305 }
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1306 if((node = xmlnode_get_child(query, "password"))) {
26247
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1307 if(js->registration)
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1308 field = purple_request_field_string_new("password", _("Password"),
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1309 purple_connection_get_password(js->gc), FALSE);
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1310 else {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1311 char *data = xmlnode_get_data(node);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1312 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: 26612
diff changeset
1313 g_free(data);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1314 }
26247
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1315
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1316 purple_request_field_string_set_masked(field, TRUE);
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1317 purple_request_field_group_add_field(group, field);
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25981
diff changeset
1318 }
26612
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1319
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1320 if((node = xmlnode_get_child(query, "name"))) {
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1321 if(js->registration)
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1322 field = purple_request_field_string_new("name", _("Name"),
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
1323 purple_account_get_alias(js->gc->account), FALSE);
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1324 else {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1325 char *data = xmlnode_get_data(node);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1326 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: 26612
diff changeset
1327 g_free(data);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1328 }
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
1329 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
1330 }
26612
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1331
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1332 for (i = 0; registration_fields[i].name != NULL; ++i) {
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1333 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: 26612
diff changeset
1334 char *data = xmlnode_get_data(node);
26612
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1335 field = purple_request_field_string_new(registration_fields[i].name,
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1336 _(registration_fields[i].label),
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1337 data, FALSE);
26612
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1338 purple_request_field_group_add_field(group, field);
26615
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26612
diff changeset
1339 g_free(data);
26612
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1340 }
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
1341 }
26612
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26610
diff changeset
1342
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1343 if(registered) {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1344 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
1345 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
1346 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1347
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1348 if((y = xmlnode_get_child(query, "instructions")))
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1349 instructions = xmlnode_get_data(y);
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1350 else if(registered)
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1351 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
1352 "to change your account registration."));
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1353 else
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1354 instructions = g_strdup(_("Please fill out the information below "
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1355 "to register your new account."));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1356
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1357 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: 17869
diff changeset
1358 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: 17869
diff changeset
1359 cbdata->who = g_strdup(from);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1360
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1361 if(js->registration)
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1362 purple_request_fields(js->gc, _("Register New XMPP Account"),
16904
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16811
diff changeset
1363 _("Register New XMPP Account"), instructions, fields,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1364 _("Register"), G_CALLBACK(jabber_register_cb),
16439
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
1365 _("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
1366 purple_connection_get_account(js->gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1367 cbdata);
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1368 else {
25467
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25463
diff changeset
1369 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: 25463
diff changeset
1370 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: 25463
diff changeset
1371 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
1372 :g_strdup_printf(_("Register New Account at %s"), from);
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1373 purple_request_fields(js->gc, title,
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1374 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
1375 (registered ? _("Change Registration") : _("Register")), G_CALLBACK(jabber_register_cb),
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1376 _("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: 17869
diff changeset
1377 purple_connection_get_account(js->gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1378 cbdata);
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1379 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: 17869
diff changeset
1380 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1381
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1382 g_free(instructions);
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1383 }
15373
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 void jabber_register_start(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1386 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1387 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1388
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1389 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
1390 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1391 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1392
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1393 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: 17869
diff changeset
1394 JabberIq *iq;
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1395
17872
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1396 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: 17869
diff changeset
1397 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: 17869
diff changeset
1398 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: 17869
diff changeset
1399 }
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17869
diff changeset
1400
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
1401 void jabber_register_account(PurpleAccount *account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1402 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1403 JabberStream *js;
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1404
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1405 js = jabber_stream_new(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1406 if (js == NULL)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1407 return;
27599
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1408
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1409 js->registration = TRUE;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27527
diff changeset
1410 jabber_stream_connect(js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1411 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1412
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1413 static void
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1414 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: 26464
diff changeset
1415 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: 26464
diff changeset
1416 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: 26464
diff changeset
1417 {
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
1418 PurpleAccount *account = purple_connection_get_account(js->gc);
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1419
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1420 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
1421 char *msg = jabber_parse_error(js, packet, NULL);
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1422
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
1423 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
1424 _("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
1425 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
1426 if(js->unregistration_cb)
18921
ba3b22cd280b Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18920
diff changeset
1427 js->unregistration_cb(account, FALSE, js->unregistration_user_data);
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1428 } 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
1429 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
1430 _("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
1431 if(js->unregistration_cb)
18921
ba3b22cd280b Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18920
diff changeset
1432 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
1433 }
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
1434 }
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
1435
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
1436 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
1437 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
1438 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
1439
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1440 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
1441
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1442 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
1443
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1444 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
1445
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1446 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
1447 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
1448
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1449 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
1450 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
1451 }
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
1452
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
1453 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
1454 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
1455 JabberStream *js;
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1456
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
1457 if(gc->state != PURPLE_CONNECTED) {
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
1458 if(gc->state != PURPLE_CONNECTING)
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
1459 jabber_login(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
1460 js = gc->proto_data;
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
1461 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
1462 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
1463 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
1464 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
1465 }
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1466
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
1467 js = gc->proto_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
1468
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1469 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
1470 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
1471 return;
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1472 }
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1473
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
1474 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
1475 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
1476 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
1477
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
1478 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
1479 }
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
1480
25587
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25586
diff changeset
1481 /* 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: 25586
diff changeset
1482 * 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: 25586
diff changeset
1483 * termination before destorying everything. That seems like it would require
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25586
diff changeset
1484 * 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: 25586
diff changeset
1485 */
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
1486 void jabber_close(PurpleConnection *gc)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1487 {
28943
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 28942
diff changeset
1488 JabberStream *js = purple_connection_get_protocol_data(gc);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1489
23817
41d6d4217d21 Further decoupled Jingle code from jabber.c:
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23816
diff changeset
1490 /* Close all of the open Jingle sessions on this stream */
24938
bd598b606ca4 Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23911
diff changeset
1491 jingle_terminate_sessions(js);
23797
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23796
diff changeset
1492
28943
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 28942
diff changeset
1493 if (js->bosh)
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 28942
diff changeset
1494 jabber_bosh_connection_close(js->bosh);
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 28942
diff changeset
1495 else if ((js->gsc && js->gsc->fd > 0) || js->fd > 0)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1496 jabber_send_raw(js, "</stream:stream>", -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1497
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1498 if (js->srv_query_data)
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1499 purple_srv_cancel(js->srv_query_data);
15373
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 if(js->gsc) {
28943
1cf9103727f2 jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents: 28942
diff changeset
1502 purple_ssl_close(js->gsc);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1503 } else if (js->fd > 0) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1504 if(js->gc->inpa)
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1505 purple_input_remove(js->gc->inpa);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1506 close(js->fd);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1507 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1508
25182
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25181
diff changeset
1509 if (js->bosh)
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25181
diff changeset
1510 jabber_bosh_connection_destroy(js->bosh);
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25181
diff changeset
1511
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1512 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
1513
17876
7a3a66c6530a Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17872
diff changeset
1514 jabber_parser_free(js);
7a3a66c6530a Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17872
diff changeset
1515
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1516 if(js->iq_callbacks)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1517 g_hash_table_destroy(js->iq_callbacks);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1518 if(js->buddies)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1519 g_hash_table_destroy(js->buddies);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1520 if(js->chats)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1521 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
1522
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1523 while(js->chat_servers) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1524 g_free(js->chat_servers->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1525 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
1526 }
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
1527
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1528 while(js->user_directories) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1529 g_free(js->user_directories->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1530 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
1531 }
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
1532
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
1533 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
1534 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
1535 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
1536 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
1537 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
1538 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
1539 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
1540 }
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
1541
23686
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23599
diff changeset
1542 while(js->url_datas) {
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23599
diff changeset
1543 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: 23599
diff changeset
1544 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: 23599
diff changeset
1545 }
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23599
diff changeset
1546
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
1547 g_free(js->stream_id);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1548 if(js->user)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1549 jabber_id_free(js->user);
25426
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25423
diff changeset
1550 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
1551 g_free(js->avatar_hash);
25146
4040da08a733 Entity Capabilities must be per-JabberStream
Paul Aurich <paul@darkrain42.org>
parents: 25145
diff changeset
1552 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
1553
29746
0f895633faeb jabber: Stifle an assertion warning.
Paul Aurich <paul@darkrain42.org>
parents: 29734
diff changeset
1554 if (js->write_buffer)
0f895633faeb jabber: Stifle an assertion warning.
Paul Aurich <paul@darkrain42.org>
parents: 29734
diff changeset
1555 purple_circ_buffer_destroy(js->write_buffer);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1556 if(js->writeh)
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1557 purple_input_remove(js->writeh);
28707
c1d41b7484ff jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents: 28696
diff changeset
1558 if (js->auth_mech && js->auth_mech->dispose)
c1d41b7484ff jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents: 28696
diff changeset
1559 js->auth_mech->dispose(js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1560 #ifdef HAVE_CYRUS_SASL
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1561 if(js->sasl)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1562 sasl_dispose(&js->sasl);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1563 if(js->sasl_mechs)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1564 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
1565 g_free(js->sasl_cb);
18929
67cb28c0ec89 applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18163
diff changeset
1566 #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
1567 g_free(js->serverFQDN);
17883
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: 17881
diff changeset
1568 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: 17881
diff changeset
1569 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: 17881
diff changeset
1570 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: 17881
diff changeset
1571 g_free(cmd->node);
17893
11dd7969dd4b Fixed copy/paste error.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17890
diff changeset
1572 g_free(cmd->name);
17883
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: 17881
diff changeset
1573 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: 17881
diff changeset
1574 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: 17881
diff changeset
1575 }
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1576 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
1577 g_free(js->certificate_CN);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1578 g_free(js->gmail_last_time);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1579 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
1580 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
1581 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
1582 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
1583 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
1584 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
1585 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
1586 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
1587
27775
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 27663
diff changeset
1588 if (js->vcard_timer != 0)
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 27663
diff changeset
1589 purple_timeout_remove(js->vcard_timer);
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 27663
diff changeset
1590
27069
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27055
diff changeset
1591 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
1592 purple_timeout_remove(js->keepalive_timeout);
29772
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1593 if (js->inactivity_timer != 0)
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1594 purple_timeout_remove(js->inactivity_timer);
23598
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
1595
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23396
diff changeset
1596 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: 23396
diff changeset
1597 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: 23396
diff changeset
1598
26080
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26063
diff changeset
1599 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: 26063
diff changeset
1600 js->stun_ip = NULL;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26063
diff changeset
1601
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26063
diff changeset
1602 /* 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: 26063
diff changeset
1603 if (js->stun_query) {
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26063
diff changeset
1604 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: 26063
diff changeset
1605 js->stun_query = NULL;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26063
diff changeset
1606 }
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
1607
23599
fa8567fa0ca0 Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23598
diff changeset
1608 g_free(js);
fa8567fa0ca0 Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23598
diff changeset
1609
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1610 gc->proto_data = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1611 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1612
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1613 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
1614 {
28327
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: 28314
diff changeset
1615 #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: 28314
diff changeset
1616
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1617 js->state = state;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1618 switch(state) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1619 case JABBER_STREAM_OFFLINE:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1620 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1621 case JABBER_STREAM_CONNECTING:
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1622 purple_connection_update_progress(js->gc, _("Connecting"), 1,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1623 JABBER_CONNECT_STEPS);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1624 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1625 case JABBER_STREAM_INITIALIZING:
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1626 purple_connection_update_progress(js->gc, _("Initializing Stream"),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1627 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1628 jabber_stream_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1629 break;
17879
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: 17876
diff changeset
1630 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: 17876
diff changeset
1631 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: 17876
diff changeset
1632 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: 17876
diff changeset
1633 break;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1634 case JABBER_STREAM_AUTHENTICATING:
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1635 purple_connection_update_progress(js->gc, _("Authenticating"),
17879
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: 17876
diff changeset
1636 js->gsc ? 7 : 3, JABBER_CONNECT_STEPS);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1637 break;
28096
b357216b7b79 jabber: Fix using BOSH and legacy auth together. Closes #9990.
Paul Aurich <paul@darkrain42.org>
parents: 28048
diff changeset
1638 case JABBER_STREAM_POST_AUTH:
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1639 purple_connection_update_progress(js->gc, _("Re-initializing Stream"),
17879
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: 17876
diff changeset
1640 (js->gsc ? 8 : 4), JABBER_CONNECT_STEPS);
16811
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: 16719
diff changeset
1641
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1642 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1643 case JABBER_STREAM_CONNECTED:
27495
c8390dc125c1 Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents: 27014
diff changeset
1644 /* Send initial presence */
c8390dc125c1 Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents: 27014
diff changeset
1645 jabber_presence_send(js, TRUE);
29772
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1646 /* Start up the inactivity timer */
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1647 jabber_stream_restart_inactivity_timer(js);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1648
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1649 purple_connection_set_state(js->gc, PURPLE_CONNECTED);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1650 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1651 }
28327
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: 28314
diff changeset
1652
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: 28314
diff changeset
1653 #undef JABBER_CONNECT_STEPS
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1654 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1655
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1656 char *jabber_get_next_id(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1657 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1658 return g_strdup_printf("purple%x", js->next_id++);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1659 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1660
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1661
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
1662 void jabber_idle_set(PurpleConnection *gc, int idle)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1663 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1664 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1665
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1666 js->idle = idle ? time(NULL) - idle : idle;
26705
fef989505ea2 propagate from branch 'im.pidgin.pidgin' (head 7281ad5ba8e68debd285e06dafebd991e980f3da)
Paul Aurich <paul@darkrain42.org>
parents: 26698 26699
diff changeset
1667
25198
e9b7e41dc816 A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <ml@update.uu.se>
parents: 24216
diff changeset
1668 /* 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: 24216
diff changeset
1669 purple_debug_info("jabber", "sending updated presence for idle\n");
26736
a0e48796defb Fix merging.
Paul Aurich <paul@darkrain42.org>
parents: 26735
diff changeset
1670 jabber_presence_send(js, FALSE);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1671 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1672
26951
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1673 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: 26933
diff changeset
1674 JabberIqType type, const char *id,
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1675 xmlnode *child)
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1676 {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1677 JabberIq *result;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1678 xmlnode *item;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1679 PurpleAccount *account;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1680 gboolean is_block;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1681
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1682 if (!jabber_is_own_account(js, from)) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1683 xmlnode *error, *x;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1684 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: 26933
diff changeset
1685 xmlnode_set_attrib(result->node, "id", id);
26958
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: 26957
diff changeset
1686 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: 26957
diff changeset
1687 xmlnode_set_attrib(result->node, "to", from);
26951
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1688
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1689 error = xmlnode_new_child(result->node, "error");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1690 xmlnode_set_attrib(error, "type", "cancel");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1691 x = xmlnode_new_child(error, "not-allowed");
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
1692 xmlnode_set_namespace(x, NS_XMPP_STANZAS);
26951
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1693
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1694 jabber_iq_send(result);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1695 return;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1696 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1697
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1698 account = purple_connection_get_account(js->gc);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1699 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: 26933
diff changeset
1700
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1701 item = xmlnode_get_child(child, "item");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1702 if (!is_block && item == NULL) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1703 /* Unblock everyone */
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1704 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: 26933
diff changeset
1705
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1706 while (account->deny != NULL) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1707 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: 26933
diff changeset
1708 }
26957
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1709 } else if (item == NULL) {
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1710 /* An empty <block/> is bogus */
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1711 xmlnode *error, *x;
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1712 result = jabber_iq_new(js, JABBER_IQ_ERROR);
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1713 xmlnode_set_attrib(result->node, "id", id);
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1714
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1715 error = xmlnode_new_child(result->node, "error");
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1716 xmlnode_set_attrib(error, "type", "modify");
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1717 x = xmlnode_new_child(error, "bad-request");
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
1718 xmlnode_set_namespace(x, NS_XMPP_STANZAS);
26957
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1719
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1720 jabber_iq_send(result);
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 26952
diff changeset
1721 return;
26951
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1722 } else {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1723 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: 26933
diff changeset
1724 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: 26933
diff changeset
1725 if (jid == NULL || *jid == '\0')
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1726 continue;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1727
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1728 if (is_block)
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1729 purple_privacy_deny_add(account, jid, TRUE);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1730 else
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1731 purple_privacy_deny_remove(account, jid, TRUE);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1732 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1733 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1734
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1735 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: 26933
diff changeset
1736 xmlnode_set_attrib(result->node, "id", id);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1737 jabber_iq_send(result);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1738 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1739
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
1740 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: 26464
diff changeset
1741 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: 26464
diff changeset
1742 xmlnode *packet, gpointer data)
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1743 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1744 xmlnode *blocklist, *item;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1745 PurpleAccount *account;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1746
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1747 blocklist = xmlnode_get_child_with_namespace(packet,
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
1748 "blocklist", NS_SIMPLE_BLOCKING);
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1749 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: 24807
diff changeset
1750
26952
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 26951
diff changeset
1751 if (type == JABBER_IQ_ERROR || blocklist == NULL)
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1752 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1753
26951
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1754 /* This is the only privacy method supported by XEP-0191 */
26952
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 26951
diff changeset
1755 if (account->perm_deny != PURPLE_PRIVACY_DENY_USERS)
26951
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1756 account->perm_deny = PURPLE_PRIVACY_DENY_USERS;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1757
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1758 /*
26952
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 26951
diff changeset
1759 * 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: 26951
diff changeset
1760 * be re-written to find the set intersection and difference.
26951
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 26933
diff changeset
1761 */
26952
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 26951
diff changeset
1762 while (account->deny)
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 26951
diff changeset
1763 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: 26951
diff changeset
1764
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1765 item = xmlnode_get_child(blocklist, "item");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1766 while (item != NULL) {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1767 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: 24807
diff changeset
1768 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: 24807
diff changeset
1769 item = xmlnode_get_next_twin(item);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1770 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1771 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1772
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1773 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: 24807
diff changeset
1774 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1775 JabberIq *iq;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1776 xmlnode *blocklist;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1777
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1778 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: 24807
diff changeset
1779
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1780 blocklist = xmlnode_new_child(iq->node, "blocklist");
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
1781 xmlnode_set_namespace(blocklist, NS_SIMPLE_BLOCKING);
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1782
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1783 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: 24807
diff changeset
1784
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1785 jabber_iq_send(iq);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1786 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1787
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1788 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: 24807
diff changeset
1789 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1790 JabberStream *js;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1791 JabberIq *iq;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1792 xmlnode *block, *item;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1793
28758
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 28744
diff changeset
1794 g_return_if_fail(who != NULL && *who != '\0');
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 28744
diff changeset
1795
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 28744
diff changeset
1796 js = purple_connection_get_protocol_data(gc);
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1797 if (js == NULL)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1798 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1799
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1800 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: 24807
diff changeset
1801 {
28758
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 28744
diff changeset
1802 jabber_google_roster_add_deny(js, who);
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1803 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1804 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1805
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1806 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: 24807
diff changeset
1807 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1808 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: 24807
diff changeset
1809 _("Server doesn't support blocking"), NULL);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1810 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1811 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1812
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1813 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: 24807
diff changeset
1814
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1815 block = xmlnode_new_child(iq->node, "block");
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
1816 xmlnode_set_namespace(block, NS_SIMPLE_BLOCKING);
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1817
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1818 item = xmlnode_new_child(block, "item");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1819 xmlnode_set_attrib(item, "jid", who);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1821 jabber_iq_send(iq);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1822 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1823
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1824 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: 24807
diff changeset
1825 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1826 JabberStream *js;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1827 JabberIq *iq;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1828 xmlnode *unblock, *item;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1829
28758
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 28744
diff changeset
1830 g_return_if_fail(who != NULL && *who != '\0');
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 28744
diff changeset
1831
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 28744
diff changeset
1832 js = purple_connection_get_protocol_data(gc);
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1833 if (js == NULL)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1834 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1835
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1836 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: 24807
diff changeset
1837 {
28758
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 28744
diff changeset
1838 jabber_google_roster_rem_deny(js, who);
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1839 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1840 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1841
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1842 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: 24807
diff changeset
1843 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1844
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1845 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: 24807
diff changeset
1846
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1847 unblock = xmlnode_new_child(iq->node, "unblock");
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
1848 xmlnode_set_namespace(unblock, NS_SIMPLE_BLOCKING);
24855
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1849
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1850 item = xmlnode_new_child(unblock, "item");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1851 xmlnode_set_attrib(item, "jid", who);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1852
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1853 jabber_iq_send(iq);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1854 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24807
diff changeset
1855
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1856 void jabber_add_feature(const char *namespace, JabberFeatureEnabled cb) {
17849
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17848
diff changeset
1857 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
1858
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1859 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
1860
17849
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17848
diff changeset
1861 feat = g_new0(JabberFeature,1);
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1862 feat->namespace = g_strdup(namespace);
17849
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17848
diff changeset
1863 feat->is_enabled = cb;
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1864
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1865 /* try to remove just in case it already exists in the list */
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1866 jabber_remove_feature(namespace);
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
1867
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1868 jabber_features = g_list_append(jabber_features, feat);
17836
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17835
diff changeset
1869 }
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17835
diff changeset
1870
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1871 void jabber_remove_feature(const char *namespace) {
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1872 GList *feature;
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1873 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: 17841
diff changeset
1874 JabberFeature *feat = (JabberFeature*)feature->data;
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1875 if(!strcmp(feat->namespace, namespace)) {
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1876 g_free(feat->namespace);
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1877 g_free(feature->data);
21538
4e5bef6c3379 Fix #3669
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21418
diff changeset
1878 jabber_features = g_list_delete_link(jabber_features, feature);
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1879 break;
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1880 }
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
1881 }
17836
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17835
diff changeset
1882 }
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17835
diff changeset
1883
25167
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1884 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: 25165
diff changeset
1885 {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1886 while (jabber_features) {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1887 JabberFeature *feature = jabber_features->data;
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1888 g_free(feature->namespace);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1889 g_free(feature);
28438
c3be1de8abde jabber: Oops. --leaks.
Paul Aurich <paul@darkrain42.org>
parents: 28421
diff changeset
1890 jabber_features = g_list_delete_link(jabber_features, jabber_features);
25167
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1891 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1892 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1893
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
1894 void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name) {
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1895 GList *identity;
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1896 JabberIdentity *ident;
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1897 /* both required according to XEP-0030 */
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1898 g_return_if_fail(category != NULL);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1899 g_return_if_fail(type != NULL);
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
1900
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1901 for(identity = jabber_identities; identity; identity = identity->next) {
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1902 JabberIdentity *ident = (JabberIdentity*)identity->data;
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
1903 if (!strcmp(ident->category, category) &&
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
1904 !strcmp(ident->type, type) &&
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
1905 ((!ident->lang && !lang) || (ident->lang && lang && !strcmp(ident->lang, lang)))) {
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
1906 return;
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
1907 }
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1908 }
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
1909
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1910 ident = g_new0(JabberIdentity, 1);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1911 ident->category = g_strdup(category);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1912 ident->type = g_strdup(type);
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
1913 ident->lang = g_strdup(lang);
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1914 ident->name = g_strdup(name);
26768
966d2f2f86c8 Don't crash when the caps cb is NULL and don't corrupt jabber_identities
Paul Aurich <paul@darkrain42.org>
parents: 26760
diff changeset
1915 jabber_identities = g_list_prepend(jabber_identities, ident);
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1916 }
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
1917
25167
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1918 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: 25165
diff changeset
1919 {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1920 while (jabber_identities) {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1921 JabberIdentity *id = jabber_identities->data;
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1922 g_free(id->category);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1923 g_free(id->type);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1924 g_free(id->lang);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1925 g_free(id->name);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1926 g_free(id);
28438
c3be1de8abde jabber: Oops. --leaks.
Paul Aurich <paul@darkrain42.org>
parents: 28421
diff changeset
1927 jabber_identities = g_list_delete_link(jabber_identities, jabber_identities);
25167
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1928 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1929 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
1930
26272
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26270
diff changeset
1931 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: 26270
diff changeset
1932 {
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26270
diff changeset
1933 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: 26270
diff changeset
1934 (!js->bosh && js->gsc);
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26270
diff changeset
1935 }
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26270
diff changeset
1936
29772
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1937 static gboolean
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1938 inactivity_cb(gpointer data)
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1939 {
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1940 JabberStream *js = data;
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1941
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1942 /* 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: 29755
diff changeset
1943 * 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: 29755
diff changeset
1944 */
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1945 js->inactivity_timer = 0;
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1946
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1947 if (js->bosh)
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1948 jabber_bosh_connection_send_keepalive(js->bosh);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1949 else
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1950 jabber_send_raw(js, "\t", 1);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1951
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1952 return FALSE;
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1953 }
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1954
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1955 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: 29755
diff changeset
1956 {
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1957 if (js->inactivity_timer != 0) {
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1958 purple_timeout_remove(js->inactivity_timer);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1959 js->inactivity_timer = 0;
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1960 }
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1961
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1962 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: 29755
diff changeset
1963
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1964 js->inactivity_timer =
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1965 purple_timeout_add_seconds(js->max_inactivity,
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1966 inactivity_cb, js);
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1967 }
3ac7f10d13d4 jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents: 29755
diff changeset
1968
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
1969 const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1970 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1971 return "jabber";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1972 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1973
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
1974 const char* jabber_list_emblem(PurpleBuddy *b)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1975 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1976 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1977 JabberBuddy *jb = NULL;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
1978 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1979
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
1980 if(!gc)
15497
0d4890637238 clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15462
diff changeset
1981 return NULL;
0d4890637238 clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15462
diff changeset
1982
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
1983 js = gc->proto_data;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1984 if(js)
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
1985 jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1986
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
1987 if(!PURPLE_BUDDY_IS_ONLINE(b)) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1988 if(jb && (jb->subscription & JABBER_SUB_PENDING ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1989 !(jb->subscription & JABBER_SUB_TO)))
15462
0b6f337a46d5 Emblems in the blist
Sean Egan <seanegan@gmail.com>
parents: 15373
diff changeset
1990 return "not-authorized";
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1991 }
27054
dd7e7071d46d Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <paul@darkrain42.org>
parents: 27053
diff changeset
1992
25512
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
1993 if (jb) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
1994 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: 25432
diff changeset
1995 if (jbr) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
1996 const gchar *client_type =
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
1997 jabber_resource_get_identity_category_type(jbr, "client");
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
1998
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
1999 if (client_type) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2000 if (strcmp(client_type, "phone") == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2001 return "mobile";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2002 } 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: 25432
diff changeset
2003 return "external";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2004 } 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: 25432
diff changeset
2005 return "hiptop";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2006 } 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: 25432
diff changeset
2007 return "bot";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2008 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2009 /* 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: 25432
diff changeset
2010 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2011 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2012 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25432
diff changeset
2013
15462
0b6f337a46d5 Emblems in the blist
Sean Egan <seanegan@gmail.com>
parents: 15373
diff changeset
2014 return NULL;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2015 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2016
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
2017 char *jabber_status_text(PurpleBuddy *b)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2018 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2019 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
2020 JabberBuddy *jb = NULL;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2021 PurpleAccount *account = purple_buddy_get_account(b);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2022 PurpleConnection *gc = purple_account_get_connection(account);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2023
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2024 if (gc && gc->proto_data)
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2025 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2026
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2027 if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2028 ret = g_strdup(_("Not Authorized"));
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2029 } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2030 ret = g_strdup(jb->error_msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2031 } else {
26691
803e05b3a871 Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents: 26685
diff changeset
2032 PurplePresence *presence = purple_buddy_get_presence(b);
27487
7a2891487a00 Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27438
diff changeset
2033 PurpleStatus *status = purple_presence_get_active_status(presence);
27527
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2034 const char *message;
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2035
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2036 if((message = purple_status_get_attr_string(status, "message"))) {
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2037 ret = g_markup_escape_text(message, -1);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2038 } else if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2039 PurpleStatus *status = purple_presence_get_status(presence, "tune");
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2040 const char *title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2041 const char *artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2042 const char *album = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27517 27487
diff changeset
2043 ret = purple_util_format_song_info(title, artist, album, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2044 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2045 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2046
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2047 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2048 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2049
25695
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2050 static void
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
2051 jabber_tooltip_add_resource_text(JabberBuddyResource *jbr,
25695
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2052 PurpleNotifyUserInfo *user_info, gboolean multiple_resources)
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2053 {
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2054 char *text = NULL;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2055 char *res = NULL;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2056 char *label, *value;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2057 const char *state;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2058
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2059 if(jbr->status) {
27487
7a2891487a00 Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27438
diff changeset
2060 text = g_markup_escape_text(jbr->status, -1);
25695
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2061 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2062
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2063 if(jbr->name)
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2064 res = g_strdup_printf(" (%s)", jbr->name);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2065
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2066 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: 25692
diff changeset
2067 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: 25692
diff changeset
2068 g_free(text);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2069 text = NULL;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2070 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2071
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2072 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: 25692
diff changeset
2073 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: 25692
diff changeset
2074
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2075 purple_notify_user_info_add_pair(user_info, label, value);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2076 g_free(label);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2077 g_free(value);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2078 g_free(text);
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
2079
25695
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2080 /* if the resource is idle, show that */
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2081 /* 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: 25692
diff changeset
2082 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: 25692
diff changeset
2083 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: 25692
diff changeset
2084 if (jbr->idle && multiple_resources) {
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
2085 gchar *idle_str =
25695
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2086 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: 25692
diff changeset
2087 label = g_strdup_printf("%s%s", _("Idle"), (res ? res : ""));
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2088 purple_notify_user_info_add_pair(user_info, label, idle_str);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2089 g_free(idle_str);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2090 g_free(label);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2091 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2092 g_free(res);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2093 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2094
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
2095 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2096 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2097 JabberBuddy *jb;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2098 PurpleAccount *account;
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2099 PurpleConnection *gc;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2100
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2101 g_return_if_fail(b != NULL);
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2102
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2103 account = purple_buddy_get_account(b);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2104 g_return_if_fail(account != NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2105
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2106 gc = purple_account_get_connection(account);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2107 g_return_if_fail(gc != NULL);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2108 g_return_if_fail(gc->proto_data != NULL);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2109
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2110 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2111
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2112 if(jb) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2113 JabberBuddyResource *jbr = NULL;
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2114 PurplePresence *presence = purple_buddy_get_presence(b);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2115 const char *sub;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2116 GList *l;
19723
eedf2918aace Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@gmail.com>
parents: 19697
diff changeset
2117 const char *mood;
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
2118 gboolean multiple_resources =
25691
65f2c84f122f Only show idle time for idle resources in tooltip text when there is more than
Marcus Lundblad <ml@update.uu.se>
parents: 25686
diff changeset
2119 jb->resources && g_list_next(jb->resources);
25695
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2120 JabberBuddyResource *top_jbr = jabber_buddy_find_resource(jb, NULL);
25697
8202f850ca9e Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents: 25696
diff changeset
2121
25695
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2122 /* resource-specific info for the top resource */
25698
1ad482221d70 Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents: 25697
diff changeset
2123 if (top_jbr) {
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
2124 jabber_tooltip_add_resource_text(top_jbr, user_info,
25698
1ad482221d70 Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents: 25697
diff changeset
2125 multiple_resources);
1ad482221d70 Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents: 25697
diff changeset
2126 }
25697
8202f850ca9e Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents: 25696
diff changeset
2127
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2128 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
2129 jbr = l->data;
25695
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2130 /* the remaining resources */
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2131 if (jbr != top_jbr) {
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25692
diff changeset
2132 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: 25692
diff changeset
2133 multiple_resources);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2134 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2135 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2136
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2137 if (full) {
17846
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17845
diff changeset
2138 PurpleStatus *status;
23269
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23180
diff changeset
2139
29440
1fb503adb2ae Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents: 29435
diff changeset
2140 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: 29435
diff changeset
2141 mood = purple_status_get_attr_string(status, PURPLE_MOOD_NAME);
29433
37be968cd42c Check that mood is not the empty string, just to be safe.
Richard Laager <rlaager@wiktel.com>
parents: 29431
diff changeset
2142 if(mood && *mood) {
23269
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23180
diff changeset
2143 const char *moodtext;
29468
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
2144 /* 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: 29463
diff changeset
2145 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: 29463
diff changeset
2146 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: 29463
diff changeset
2147
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
2148 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: 29463
diff changeset
2149 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: 29463
diff changeset
2150 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: 29463
diff changeset
2151 break;
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
2152 }
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
2153 }
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
2154
29440
1fb503adb2ae Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents: 29435
diff changeset
2155 moodtext = purple_status_get_attr_string(status, PURPLE_MOOD_COMMENT);
29431
b0e7b4daf465 Do not show "Mood: mood ()" when there is no text.
Richard Laager <rlaager@wiktel.com>
parents: 24216
diff changeset
2156 if(moodtext && *moodtext) {
29468
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
2157 char *moodplustext =
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
2158 g_strdup_printf("%s (%s)", description ? _(description) : mood, moodtext);
23269
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23180
diff changeset
2159
17846
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17845
diff changeset
2160 purple_notify_user_info_add_pair(user_info, _("Mood"), moodplustext);
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17845
diff changeset
2161 g_free(moodplustext);
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17845
diff changeset
2162 } else
29468
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
2163 purple_notify_user_info_add_pair(user_info, _("Mood"),
b052a711cfbd Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents: 29463
diff changeset
2164 description ? _(description) : mood);
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2165 }
22000
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21977
diff changeset
2166 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
2167 PurpleStatus *tune = purple_presence_get_status(presence, "tune");
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2168 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: 21977
diff changeset
2169 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: 21977
diff changeset
2170 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: 21977
diff changeset
2171 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: 21977
diff changeset
2172 if (playing) {
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21977
diff changeset
2173 purple_notify_user_info_add_pair(user_info, _("Now Listening"), playing);
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21977
diff changeset
2174 g_free(playing);
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21977
diff changeset
2175 }
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2176 }
25692
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2177
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2178 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: 25691
diff changeset
2179 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: 25691
diff changeset
2180 sub = _("Both");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2181 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: 25691
diff changeset
2182 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: 25691
diff changeset
2183 else
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2184 sub = _("From");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2185 } else {
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2186 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: 25691
diff changeset
2187 sub = _("To");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2188 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: 25691
diff changeset
2189 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: 25691
diff changeset
2190 else
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2191 sub = _("None");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2192 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2193
25692
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2194 purple_notify_user_info_add_pair(user_info, _("Subscription"), sub);
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25691
diff changeset
2195
15373
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
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2198 if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2199 purple_notify_user_info_add_pair(user_info, _("Error"), jb->error_msg);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2200 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2201 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2202 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2203
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
2204 GList *jabber_status_types(PurpleAccount *account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2205 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2206 PurpleStatusType *type;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2207 GList *types = NULL;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2208 PurpleValue *priority_value;
25132
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 24058
diff changeset
2209 PurpleValue *buzz_enabled;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2210
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2211 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2212 purple_value_set_int(priority_value, 1);
25132
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 24058
diff changeset
2213 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 24058
diff changeset
2214 purple_value_set_boolean(buzz_enabled, TRUE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2215 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2216 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
2217 NULL, TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2218 "priority", _("Priority"), priority_value,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2219 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
2220 "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: 17841
diff changeset
2221 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17869
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17866
diff changeset
2222 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
25132
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 24058
diff changeset
2223 "buzz", _("Allow Buzz"), buzz_enabled,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2224 NULL);
29435
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29433
diff changeset
2225 types = g_list_prepend(types, type);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2226
29463
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29458
diff changeset
2227
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29458
diff changeset
2228 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: 29458
diff changeset
2229 "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: 29458
diff changeset
2230 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: 29458
diff changeset
2231 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: 29458
diff changeset
2232 NULL);
f3654983e1da Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents: 29458
diff changeset
2233 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: 29458
diff changeset
2234
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2235 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2236 purple_value_set_int(priority_value, 1);
25221
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 25219
diff changeset
2237 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: 25219
diff changeset
2238 purple_value_set_boolean(buzz_enabled, TRUE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2239 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2240 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
2241 _("Chatty"), TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2242 "priority", _("Priority"), priority_value,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2243 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
2244 "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: 17841
diff changeset
2245 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17869
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17866
diff changeset
2246 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
25132
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 24058
diff changeset
2247 "buzz", _("Allow Buzz"), buzz_enabled,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2248 NULL);
29435
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29433
diff changeset
2249 types = g_list_prepend(types, type);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2250
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2251 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2252 purple_value_set_int(priority_value, 0);
25221
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 25219
diff changeset
2253 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: 25219
diff changeset
2254 purple_value_set_boolean(buzz_enabled, TRUE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2255 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2256 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
2257 NULL, TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2258 "priority", _("Priority"), priority_value,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2259 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
2260 "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: 17841
diff changeset
2261 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17869
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17866
diff changeset
2262 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
2263 "buzz", _("Allow Buzz"), buzz_enabled,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2264 NULL);
29435
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29433
diff changeset
2265 types = g_list_prepend(types, type);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2266
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2267 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2268 purple_value_set_int(priority_value, 0);
25221
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 25219
diff changeset
2269 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: 25219
diff changeset
2270 purple_value_set_boolean(buzz_enabled, TRUE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2271 type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2272 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
2273 NULL, TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2274 "priority", _("Priority"), priority_value,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2275 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
2276 "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: 17841
diff changeset
2277 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17869
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17866
diff changeset
2278 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
2279 "buzz", _("Allow Buzz"), buzz_enabled,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2280 NULL);
29435
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29433
diff changeset
2281 types = g_list_prepend(types, type);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2282
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2283 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2284 purple_value_set_int(priority_value, 0);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2285 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2286 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
2287 _("Do Not Disturb"), TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2288 "priority", _("Priority"), priority_value,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2289 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
2290 "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: 17841
diff changeset
2291 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17869
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17866
diff changeset
2292 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2293 NULL);
29435
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29433
diff changeset
2294 types = g_list_prepend(types, type);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2295
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2296 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2297 if(js->protocol_version == JABBER_PROTO_0_9)
29435
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29433
diff changeset
2298 "Invisible"
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2299 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2300
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2301 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2302 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_UNAVAILABLE),
25412
b5c82724598c For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24890
diff changeset
2303 NULL, TRUE, TRUE, FALSE,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2304 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2305 NULL);
29435
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29433
diff changeset
2306 types = g_list_prepend(types, type);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2307
20570
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2308 type = purple_status_type_new_with_attrs(PURPLE_STATUS_TUNE,
24464
3a3d36791a47 I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents: 24216
diff changeset
2309 "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
2310 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
2311 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
2312 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
2313 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
2314 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
2315 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
2316 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
2317 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
2318 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
2319 NULL);
29435
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29433
diff changeset
2320 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
2321
29435
11cb7f2bb6e8 Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents: 29433
diff changeset
2322 return g_list_reverse(types);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2323 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2324
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2325 static void
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
2326 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: 26464
diff changeset
2327 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: 26464
diff changeset
2328 xmlnode *packet, gpointer data)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2329 {
26465
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26464
diff changeset
2330 if (type == JABBER_IQ_RESULT) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2331 purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2332 _("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
2333
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2334 purple_account_set_password(js->gc->account, (char *)data);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2335 } 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
2336 char *msg = jabber_parse_error(js, packet, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2337
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2338 purple_notify_error(js->gc, _("Error changing password"),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2339 _("Error changing password"), msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2340 g_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2341 }
21058
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2342
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2343 g_free(data);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2344 }
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 static void jabber_password_change_cb(JabberStream *js,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2347 PurpleRequestFields *fields)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2348 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2349 const char *p1, *p2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2350 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2351 xmlnode *query, *y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2352
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2353 p1 = purple_request_fields_get_string(fields, "password1");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2354 p2 = purple_request_fields_get_string(fields, "password2");
15373
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 if(strcmp(p1, p2)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2357 purple_notify_error(js->gc, NULL, _("New passwords do not match."), NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2358 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2359 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2360
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2361 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
2362
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2363 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
2364
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2365 query = xmlnode_get_child(iq->node, "query");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2366
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2367 y = xmlnode_new_child(query, "username");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2368 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
2369 y = xmlnode_new_child(query, "password");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2370 xmlnode_insert_data(y, p1, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2371
21058
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2372 jabber_iq_set_callback(iq, jabber_password_change_result_cb, g_strdup(p1));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2374 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2375 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2376
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2377 static void jabber_password_change(PurplePluginAction *action)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2378 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2379
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2380 PurpleConnection *gc = (PurpleConnection *) action->context;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2381 JabberStream *js = gc->proto_data;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2382 PurpleRequestFields *fields;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2383 PurpleRequestFieldGroup *group;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2384 PurpleRequestField *field;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2385
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2386 fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2387 group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2388 purple_request_fields_add_group(fields, group);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2389
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2390 field = purple_request_field_string_new("password1", _("Password"),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2391 "", FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2392 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
2393 purple_request_field_set_required(field, TRUE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2394 purple_request_field_group_add_field(group, field);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2395
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2396 field = purple_request_field_string_new("password2", _("Password (again)"),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2397 "", FALSE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2398 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
2399 purple_request_field_set_required(field, TRUE);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2400 purple_request_field_group_add_field(group, field);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2401
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2402 purple_request_fields(js->gc, _("Change XMPP Password"),
16904
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16811
diff changeset
2403 _("Change XMPP Password"), _("Please enter your new password"),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2404 fields, _("OK"), G_CALLBACK(jabber_password_change_cb),
16439
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
2405 _("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: 19723
diff changeset
2406 purple_connection_get_account(gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2407 js);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2408 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2409
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
2410 GList *jabber_actions(PurplePlugin *plugin, gpointer context)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2411 {
17848
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17846
diff changeset
2412 PurpleConnection *gc = (PurpleConnection *) context;
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17846
diff changeset
2413 JabberStream *js = gc->proto_data;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2414 GList *m = NULL;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2415 PurplePluginAction *act;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2416
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2417 act = purple_plugin_action_new(_("Set User Info..."),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2418 jabber_setup_set_info);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2419 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2420
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2421 /* if (js->protocol_options & CHANGE_PASSWORD) { */
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2422 act = purple_plugin_action_new(_("Change Password..."),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2423 jabber_password_change);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2424 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2425 /* } */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2426
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2427 act = purple_plugin_action_new(_("Search for Users..."),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2428 jabber_user_search_begin);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2429 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2430
17849
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17848
diff changeset
2431 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: 17848
diff changeset
2432
17848
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17846
diff changeset
2433 if(js->pep)
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17846
diff changeset
2434 jabber_pep_init_actions(&m);
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
2435
17883
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: 17881
diff changeset
2436 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: 17881
diff changeset
2437 jabber_adhoc_init_server_commands(js, &m);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2438
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2439 return m;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2440 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2441
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
2442 PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2443 {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2444 PurpleBlistNode *gnode, *cnode;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2445 JabberID *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2446
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2447 if(!(jid = jabber_id_new(name)))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2448 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2449
25798
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25141
diff changeset
2450 for(gnode = purple_blist_get_root(); gnode;
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25141
diff changeset
2451 gnode = purple_blist_node_get_sibling_next(gnode)) {
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25141
diff changeset
2452 for(cnode = purple_blist_node_get_first_child(gnode);
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25141
diff changeset
2453 cnode;
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25141
diff changeset
2454 cnode = purple_blist_node_get_sibling_next(cnode)) {
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2455 PurpleChat *chat = (PurpleChat*)cnode;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2456 const char *room, *server;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2457 GHashTable *components;
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2458 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2459 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2460
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2461 if (purple_chat_get_account(chat) != account)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2462 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2463
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2464 components = purple_chat_get_components(chat);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2465 if(!(room = g_hash_table_lookup(components, "room")))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2466 continue;
25130
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24058
diff changeset
2467 if(!(server = g_hash_table_lookup(components, "server")))
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2468 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2469
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2470 if(jid->node && jid->domain &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2471 !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
2472 jabber_id_free(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2473 return chat;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2474 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2475 }
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 jabber_id_free(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2478 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2479 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2480
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
2481 void jabber_convo_closed(PurpleConnection *gc, const char *who)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2482 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2483 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2484 JabberID *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2485 JabberBuddy *jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2486 JabberBuddyResource *jbr;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2487
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2488 if(!(jid = jabber_id_new(who)))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2489 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2490
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2491 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
2492 (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
2493 if(jbr->thread_id) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2494 g_free(jbr->thread_id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2495 jbr->thread_id = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2496 }
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 jabber_id_free(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2500 }
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
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2503 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
2504 xmlnode *packet,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
2505 PurpleConnectionError *reason)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2506 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2507 xmlnode *error;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2508 const char *code = NULL, *text = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2509 const char *xmlns = xmlnode_get_namespace(packet);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2510 char *cdata = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2511
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2512 #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
2513 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
2514
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2515 if((error = xmlnode_get_child(packet, "error"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2516 cdata = xmlnode_get_data(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2517 code = xmlnode_get_attrib(error, "code");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2518
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2519 /* Stanza errors */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2520 if(xmlnode_get_child(error, "bad-request")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2521 text = _("Bad Request");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2522 } else if(xmlnode_get_child(error, "conflict")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2523 text = _("Conflict");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2524 } 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
2525 text = _("Feature Not Implemented");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2526 } else if(xmlnode_get_child(error, "forbidden")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2527 text = _("Forbidden");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2528 } else if(xmlnode_get_child(error, "gone")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2529 text = _("Gone");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2530 } 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
2531 text = _("Internal Server Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2532 } 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
2533 text = _("Item Not Found");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2534 } else if(xmlnode_get_child(error, "jid-malformed")) {
16904
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16811
diff changeset
2535 text = _("Malformed XMPP ID");
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2536 } 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
2537 text = _("Not Acceptable");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2538 } 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
2539 text = _("Not Allowed");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2540 } 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
2541 text = _("Not Authorized");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2542 } 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
2543 text = _("Payment Required");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2544 } 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
2545 text = _("Recipient Unavailable");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2546 } else if(xmlnode_get_child(error, "redirect")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2547 /* XXX */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2548 } 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
2549 text = _("Registration Required");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2550 } 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
2551 text = _("Remote Server Not Found");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2552 } 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
2553 text = _("Remote Server Timeout");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2554 } 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
2555 text = _("Server Overloaded");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2556 } 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
2557 text = _("Service Unavailable");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2558 } 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
2559 text = _("Subscription Required");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2560 } 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
2561 text = _("Unexpected Request");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2562 } 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
2563 text = _("Unknown Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2564 }
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
2565 } 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
2566 /* 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
2567 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2568 if(xmlnode_get_child(packet, "aborted")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2569 text = _("Authorization Aborted");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2570 } 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
2571 text = _("Incorrect encoding in authorization");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2572 } 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
2573 text = _("Invalid authzid");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2574 } 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
2575 text = _("Invalid Authorization Mechanism");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2576 } 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
2577 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2578 text = _("Authorization mechanism too weak");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2579 } 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
2580 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: 19723
diff changeset
2581 /* Clear the pasword if it isn't being saved */
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: 19723
diff changeset
2582 if (!purple_account_get_remember_password(js->gc->account))
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: 19723
diff changeset
2583 purple_account_set_password(js->gc->account, NULL);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2584 text = _("Not Authorized");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2585 } 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
2586 text = _("Temporary Authentication Failure");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2587 } 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
2588 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2589 text = _("Authentication Failure");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2590 }
15916
4be5d38ee117 Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <mark@kingant.net>
parents: 15914
diff changeset
2591 } 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
2592 (!strcmp(packet->name, "error") && xmlns &&
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
2593 !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
2594 /* Most common reason as default: */
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
2595 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2596 if(xmlnode_get_child(packet, "bad-format")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2597 text = _("Bad Format");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2598 } 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
2599 text = _("Bad Namespace Prefix");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2600 } else if(xmlnode_get_child(packet, "conflict")) {
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
2601 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2602 text = _("Resource Conflict");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2603 } 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
2604 text = _("Connection Timeout");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2605 } 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
2606 text = _("Host Gone");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2607 } 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
2608 text = _("Host Unknown");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2609 } 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
2610 text = _("Improper Addressing");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2611 } 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
2612 text = _("Internal Server Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2613 } 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
2614 text = _("Invalid ID");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2615 } 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
2616 text = _("Invalid Namespace");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2617 } 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
2618 text = _("Invalid XML");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2619 } 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
2620 text = _("Non-matching Hosts");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2621 } 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
2622 text = _("Not Authorized");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2623 } 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
2624 text = _("Policy Violation");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2625 } 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
2626 text = _("Remote Connection Failed");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2627 } 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
2628 text = _("Resource Constraint");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2629 } 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
2630 text = _("Restricted XML");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2631 } 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
2632 text = _("See Other Host");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2633 } 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
2634 text = _("System Shutdown");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2635 } 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
2636 text = _("Undefined Condition");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2637 } 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
2638 text = _("Unsupported Encoding");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2639 } 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
2640 text = _("Unsupported Stanza Type");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2641 } 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
2642 text = _("Unsupported Version");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2643 } 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
2644 text = _("XML Not Well Formed");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2645 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2646 text = _("Stream Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2647 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2648 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2649
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2650 #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
2651
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2652 if(text || cdata) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2653 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
2654 code ? ": " : "", text ? text : cdata);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2655 g_free(cdata);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2656 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2657 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2658 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2659 }
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
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2662 static PurpleCmdRet jabber_cmd_chat_config(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2663 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
2664 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2665 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
2666
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2667 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
2668 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
2669
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2670 jabber_chat_request_room_configure(chat);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2671 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2672 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2673
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2674 static PurpleCmdRet jabber_cmd_chat_register(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2675 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
2676 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2677 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
2678
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2679 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
2680 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
2681
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2682 jabber_chat_register(chat);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2683 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2684 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2685
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2686 static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2687 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
2688 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2689 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
2690
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2691 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
2692 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
2693
26684
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2694 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: 26567
diff changeset
2695 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: 26567
diff changeset
2696 else {
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2697 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: 26567
diff changeset
2698 char *buf, *tmp, *tmp2;
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2699
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2700 if (cur) {
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2701 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: 26567
diff changeset
2702 tmp2 = purple_markup_linkify(tmp);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2703 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: 26567
diff changeset
2704 g_free(tmp);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2705 g_free(tmp2);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2706 } else
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2707 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: 26567
diff changeset
2708 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: 26567
diff changeset
2709 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: 26567
diff changeset
2710 g_free(buf);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2711 }
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26567
diff changeset
2712
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2713 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2714 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2715
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2716 static PurpleCmdRet jabber_cmd_chat_nick(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2717 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
2718 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2719 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
2720
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2721 if(!chat || !args || !args[0])
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2722 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2723
28421
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28396
diff changeset
2724 if (!jabber_resourceprep_validate(args[0])) {
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28396
diff changeset
2725 *error = g_strdup(_("Invalid nickname"));
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28396
diff changeset
2726 return PURPLE_CMD_RET_FAILED;
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28396
diff changeset
2727 }
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28396
diff changeset
2728
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28396
diff changeset
2729 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: 28396
diff changeset
2730 return PURPLE_CMD_RET_OK;
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28396
diff changeset
2731 else
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28396
diff changeset
2732 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2733 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2734
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2735 static PurpleCmdRet jabber_cmd_chat_part(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2736 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
2737 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2738 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
2739
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2740 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
2741 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
2742
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2743 jabber_chat_part(chat, args ? args[0] : NULL);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2744 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2745 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2746
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2747 static PurpleCmdRet jabber_cmd_chat_ban(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2748 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
2749 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2750 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
2751
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2752 if(!chat || !args || !args[0])
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2753 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2754
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2755 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
2756 *error = g_strdup_printf(_("Unable to ban user %s"), args[0]);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2757 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2758 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2759
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2760 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2761 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2762
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2763 static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2764 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
2765 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2766 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
2767
26802
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2768 if (!chat || !args || !args[0])
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2769 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2770
26802
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2771 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: 26777
diff changeset
2772 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: 26777
diff changeset
2773 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: 26777
diff changeset
2774 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: 26777
diff changeset
2775 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: 26777
diff changeset
2776 *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[0]);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2777 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2778 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2779
26802
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2780 if (args[1]) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2781 int i;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2782 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: 26777
diff changeset
2783
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2784 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: 26777
diff changeset
2785 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: 26777
diff changeset
2786 *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: 26777
diff changeset
2787 g_strfreev(nicks);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2788 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: 26777
diff changeset
2789 }
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2790
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2791 g_strfreev(nicks);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2792 } else {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2793 jabber_chat_affiliation_list(chat, args[0]);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2794 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2795
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2796 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2797 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2798
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2799 static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2800 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
2801 {
18855
28a7c9dbbc2b Fix uninitialized variable access.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18711
diff changeset
2802 JabberChat *chat = jabber_chat_find_by_conv(conv);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2803
26802
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2804 if (!chat || !args || !args[0])
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2805 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2806
26802
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2807 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: 26777
diff changeset
2808 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: 26777
diff changeset
2809 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: 26777
diff changeset
2810 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: 26777
diff changeset
2811 *error = g_strdup_printf(_("Unknown role: \"%s\""), args[0]);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2812 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2813 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2814
26802
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2815 if (args[1]) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2816 int i;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2817 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: 26777
diff changeset
2818
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2819 for (i = 0; nicks[i]; i++)
29070
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: 29068
diff changeset
2820 if (!jabber_chat_role_user(chat, nicks[i], args[0], NULL)) {
26802
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2821 *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: 26777
diff changeset
2822 args[0], nicks[i]);
29068
403a53ff9aa4 jabber: Possible leaks--;
Paul Aurich <paul@darkrain42.org>
parents: 29047
diff changeset
2823 g_strfreev(nicks);
26802
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2824 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: 26777
diff changeset
2825 }
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2826
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2827 g_strfreev(nicks);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2828 } else {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
2829 jabber_chat_role_list(chat, args[0]);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2830 }
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2831 return PURPLE_CMD_RET_OK;
15373
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
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2834 static PurpleCmdRet jabber_cmd_chat_invite(PurpleConversation *conv,
15373
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 if(!args || !args[0])
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2838 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2839
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2840 jabber_chat_invite(purple_conversation_get_gc(conv),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2841 purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), args[1] ? args[1] : "",
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2842 args[0]);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2843
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2844 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2845 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2846
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2847 static PurpleCmdRet jabber_cmd_chat_join(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2848 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
2849 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2850 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
2851 GHashTable *components;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2852
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2853 if(!chat || !args || !args[0])
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2854 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2855
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2856 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
2857
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2858 g_hash_table_replace(components, "room", args[0]);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2859 g_hash_table_replace(components, "server", chat->server);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2860 g_hash_table_replace(components, "handle", chat->handle);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2861 if(args[1])
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2862 g_hash_table_replace(components, "password", args[1]);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2863
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2864 jabber_chat_join(purple_conversation_get_gc(conv), components);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2865
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2866 g_hash_table_destroy(components);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2867 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2868 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2869
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2870 static PurpleCmdRet jabber_cmd_chat_kick(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2871 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
2872 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2873 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
2874
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2875 if(!chat || !args || !args[0])
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2876 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2877
29070
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: 29068
diff changeset
2878 if(!jabber_chat_role_user(chat, args[0], "none", args[1])) {
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2879 *error = g_strdup_printf(_("Unable to kick user %s"), args[0]);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2880 return PURPLE_CMD_RET_FAILED;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2881 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2882
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2883 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2884 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2885
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2886 static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2887 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
2888 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2889 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
2890 char *who;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2891
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2892 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
2893 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
2894
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2895 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
2896
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2897 jabber_message_send_im(purple_conversation_get_gc(conv), who, args[1], 0);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2898
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2899 g_free(who);
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
2900 return PURPLE_CMD_RET_OK;
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2901 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2902
17835
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2903 static PurpleCmdRet jabber_cmd_ping(PurpleConversation *conv,
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2904 const char *cmd, char **args, char **error, void *data)
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2905 {
25980
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25979
diff changeset
2906 PurpleAccount *account;
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25979
diff changeset
2907 PurpleConnection *pc;
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25979
diff changeset
2908
17835
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2909 if(!args || !args[0])
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2910 return PURPLE_CMD_RET_FAILED;
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2911
25980
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25979
diff changeset
2912 account = purple_conversation_get_account(conv);
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25979
diff changeset
2913 pc = purple_account_get_connection(account);
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25979
diff changeset
2914
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25979
diff changeset
2915 if(!jabber_ping_jid(purple_connection_get_protocol_data(pc), args[0])) {
17835
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2916 *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: 17834
diff changeset
2917 return PURPLE_CMD_RET_FAILED;
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2918 }
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2919
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2920 return PURPLE_CMD_RET_OK;
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2921 }
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17834
diff changeset
2922
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2923 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
2924
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2925 JabberBuddy *jb;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2926 JabberBuddyResource *jbr;
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2927 PurpleConnection *gc = js->gc;
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
2928 PurpleBuddy *buddy =
25708
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25706
diff changeset
2929 purple_find_buddy(purple_connection_get_account(gc), username);
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
2930 const gchar *alias =
25708
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25706
diff changeset
2931 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
2932
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2933 if(!username)
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2934 return FALSE;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2935
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2936 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
2937 if(!jb) {
25708
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25706
diff changeset
2938 *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: 25706
diff changeset
2939 "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
2940 return FALSE;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2941 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2942
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2943 jbr = jabber_buddy_find_resource(jb, NULL);
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2944 if (!jbr) {
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
2945 *error = g_strdup_printf(_("Unable to buzz, because %s might be offline."),
25708
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25706
diff changeset
2946 alias);
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2947 return FALSE;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2948 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2949
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
2950 if (jabber_resource_has_capability(jbr, NS_ATTENTION)) {
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2951 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: 25133
diff changeset
2952 gchar *to;
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
2953
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2954 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: 25133
diff changeset
2955 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: 25133
diff changeset
2956 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
2957
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2958 /* avoid offline storage */
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2959 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
2960
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2961 buzz = xmlnode_new_child(msg, "attention");
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
2962 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
2963
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2964 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: 25133
diff changeset
2965 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
2966
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2967 return TRUE;
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2968 } else {
25708
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25706
diff changeset
2969 *error = g_strdup_printf(_("Unable to buzz, because %s does "
25981
7ace7bf0bfad Use "does" here sounds more natural to me
Mark Doliner <mark@kingant.net>
parents: 25952
diff changeset
2970 "not support it or does not wish to receive buzzes now."), alias);
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2971 return FALSE;
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2972 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2973 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2974
17888
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17887
diff changeset
2975 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv,
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17887
diff changeset
2976 const char *cmd, char **args, char **error, void *data)
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17887
diff changeset
2977 {
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17887
diff changeset
2978 JabberStream *js = conv->account->gc->proto_data;
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2979 const gchar *who;
29278
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
2980 gchar *description;
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
2981 PurpleBuddy *buddy;
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
2982 const char *alias;
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
2983 PurpleAttentionType *attn =
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
2984 purple_get_attention_type_from_code(conv->account, 0);
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
2985
25136
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2986 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: 25133
diff changeset
2987 /* 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: 25133
diff changeset
2988 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: 25133
diff changeset
2989 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: 25133
diff changeset
2990 } else {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2991 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: 25133
diff changeset
2992 }
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2993 } else {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2994 who = args[0];
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 25133
diff changeset
2995 }
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
2996
29278
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
2997 buddy = purple_find_buddy(conv->account, who);
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
2998 if (buddy != NULL)
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
2999 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: 29275
diff changeset
3000 else
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
3001 alias = who;
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
3002
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
3003 description =
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
3004 g_strdup_printf(purple_attention_type_get_outgoing_desc(attn), alias);
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
3005 purple_conversation_write(conv, NULL, description,
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
3006 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: 29275
diff changeset
3007 g_free(description);
68f6de7d1408 Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents: 29275
diff changeset
3008 return _jabber_send_buzz(js, who, error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED;
17888
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17887
diff changeset
3009 }
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17887
diff changeset
3010
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3011 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
3012 {
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3013 static GList *types = NULL;
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3014
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3015 if (!types) {
22097
eab7d03edfcb This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22034
diff changeset
3016 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
3017 _("%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
3018 }
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3019
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3020 return types;
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3021 }
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3022
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3023 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
3024 {
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3025 JabberStream *js = gc->proto_data;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3026 gchar *error = NULL;
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3027
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3028 if (!_jabber_send_buzz(js, username, &error)) {
29503
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29492
diff changeset
3029 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: 29492
diff changeset
3030 PurpleConversation *conv =
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29492
diff changeset
3031 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
3032 purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)");
29503
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29492
diff changeset
3033
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29492
diff changeset
3034 if (conv) {
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29492
diff changeset
3035 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: 29492
diff changeset
3036 time(NULL));
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29492
diff changeset
3037 }
7adebf6acc50 jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents: 29492
diff changeset
3038
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3039 g_free(error);
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3040 return FALSE;
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3041 }
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3042
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
3043 return TRUE;
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3044 }
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3045
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
3046
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
3047 gboolean jabber_offline_message(const PurpleBuddy *buddy)
15373
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 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3050 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3051
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3052 #ifdef USE_VV
26457
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26454
diff changeset
3053 gboolean
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26454
diff changeset
3054 jabber_audio_enabled(JabberStream *js, const char *namespace)
26453
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3055 {
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3056 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: 26451
diff changeset
3057 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: 26451
diff changeset
3058
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3059 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: 26451
diff changeset
3060 }
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3061
26997
72bcdcb0629f Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26987
diff changeset
3062 gboolean
26457
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26454
diff changeset
3063 jabber_video_enabled(JabberStream *js, const char *namespace)
26453
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3064 {
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3065 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: 26451
diff changeset
3066 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: 26451
diff changeset
3067
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3068 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: 26451
diff changeset
3069 }
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3070
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3071 typedef struct {
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3072 PurpleAccount *account;
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3073 gchar *who;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3074 PurpleMediaSessionType type;
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
3075
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3076 } JabberMediaRequest;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3077
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3078 static void
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3079 jabber_media_cancel_cb(JabberMediaRequest *request,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3080 PurpleRequestFields *fields)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3081 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3082 g_free(request->who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3083 g_free(request);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3084 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3085
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3086 static void
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3087 jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestFields *fields)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3088 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3089 PurpleRequestField *field =
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3090 purple_request_fields_get_field(fields, "resource");
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3091 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: 26418
diff changeset
3092 GList *labels = purple_request_field_choice_get_labels(field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3093 gchar *who = g_strdup_printf("%s/%s", request->who,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3094 (gchar*)g_list_nth_data(labels, selected_id));
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3095 jabber_initiate_media(request->account, who, request->type);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3096
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3097 g_free(who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3098 g_free(request->who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3099 g_free(request);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3100 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3101 #endif
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3102
26365
34eb898478b4 Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26335
diff changeset
3103 gboolean
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
3104 jabber_initiate_media(PurpleAccount *account, const char *who,
23869
551a462b346a Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23867
diff changeset
3105 PurpleMediaSessionType type)
23787
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23785
diff changeset
3106 {
26334
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26279
diff changeset
3107 #ifdef USE_VV
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3108 JabberStream *js = (JabberStream *)
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3109 purple_account_get_connection(account)->proto_data;
25005
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24986
diff changeset
3110 JabberBuddy *jb;
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3111 JabberBuddyResource *jbr = NULL;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3112 char *resource;
25005
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24986
diff changeset
3113
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24986
diff changeset
3114 if (!js) {
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24986
diff changeset
3115 purple_debug_error("jabber",
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24986
diff changeset
3116 "jabber_initiate_media: NULL stream\n");
26365
34eb898478b4 Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26335
diff changeset
3117 return FALSE;
25005
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24986
diff changeset
3118 }
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24986
diff changeset
3119
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3120
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3121 if((resource = jabber_get_resource(who)) != NULL) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3122 /* 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: 26418
diff changeset
3123 * default or anything, just do it */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3124
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3125 jb = jabber_buddy_find(js, who, FALSE);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3126 jbr = jabber_buddy_find_resource(jb, resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3127 g_free(resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3128
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3129 if (type & PURPLE_MEDIA_AUDIO &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3130 !jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3131 JINGLE_APP_RTP_SUPPORT_AUDIO) &&
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
3132 jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE))
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3133 return jabber_google_session_initiate(js, who, type);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3134 else
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3135 return jingle_rtp_initiate_media(js, who, type);
25005
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24986
diff changeset
3136 }
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24986
diff changeset
3137
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3138 jb = jabber_buddy_find(js, who, FALSE);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3139
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3140 if(!jb || !jb->resources) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3141 /* 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: 26418
diff changeset
3142 * whose presence we're not subscribed to, or
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3143 * someone who is offline. Let's inform the user */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3144 char *msg;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3145
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3146 if(!jb) {
26436
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26432
diff changeset
3147 msg = g_strdup_printf(_("Unable to initiate media with %s: invalid JID"), who);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3148 } else if(jb->subscription & JABBER_SUB_TO) {
26436
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26432
diff changeset
3149 msg = g_strdup_printf(_("Unable to initiate media with %s: user is not online"), who);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3150 } else {
26436
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26432
diff changeset
3151 msg = g_strdup_printf(_("Unable to initiate media with %s: not subscribed to user presence"), who);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3152 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3153
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3154 purple_notify_error(account, _("Media Initiation Failed"),
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3155 _("Media Initiation Failed"), msg);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3156 g_free(msg);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3157 return FALSE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3158 } else if(!jb->resources->next) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3159 /* only 1 resource online (probably our most common case)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3160 * so no need to ask who to initiate with */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3161 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3162 gboolean result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3163 jbr = jb->resources->data;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3164 name = g_strdup_printf("%s/%s", who, jbr->name);
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3165 result = jabber_initiate_media(account, name, type);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3166 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3167 return result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3168 } else {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3169 /* we've got multiple resources,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3170 * we need to pick one to initiate with */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3171 GList *l;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3172 char *msg;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3173 PurpleRequestFields *fields;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3174 PurpleRequestField *field = purple_request_field_choice_new(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3175 "resource", _("Resource"), 0);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3176 PurpleRequestFieldGroup *group;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3177 JabberMediaRequest *request;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3178
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3179 for(l = jb->resources; l; l = l->next)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3180 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3181 JabberBuddyResource *ljbr = l->data;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3182 PurpleMediaCaps caps;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3183 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3184 name = g_strdup_printf("%s/%s", who, ljbr->name);
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3185 caps = jabber_get_media_caps(account, name);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3186 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3187
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3188 if ((type & PURPLE_MEDIA_AUDIO) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3189 (type & PURPLE_MEDIA_VIDEO)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3190 if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3191 jbr = ljbr;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3192 purple_request_field_choice_add(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3193 field, jbr->name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3194 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3195 } else if (type & (PURPLE_MEDIA_AUDIO) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3196 (caps & PURPLE_MEDIA_CAPS_AUDIO)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3197 jbr = ljbr;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3198 purple_request_field_choice_add(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3199 field, jbr->name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3200 }else if (type & (PURPLE_MEDIA_VIDEO) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3201 (caps & PURPLE_MEDIA_CAPS_VIDEO)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3202 jbr = ljbr;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3203 purple_request_field_choice_add(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3204 field, jbr->name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3205 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3206 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3207
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3208 if (jbr == NULL) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3209 purple_debug_error("jabber",
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3210 "No resources available\n");
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3211 return FALSE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3212 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3213
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3214 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: 26418
diff changeset
3215 field)) <= 1) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3216 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3217 gboolean result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3218 purple_request_field_destroy(field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3219 name = g_strdup_printf("%s/%s", who, jbr->name);
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3220 result = jabber_initiate_media(account, name, type);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3221 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3222 return result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3223 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3224
26436
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26432
diff changeset
3225 msg = g_strdup_printf(_("Please select the resource of %s with which you would like to start a media session."), who);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3226 fields = purple_request_fields_new();
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3227 group = purple_request_field_group_new(NULL);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3228 request = g_new0(JabberMediaRequest, 1);
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3229 request->account = account;
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3230 request->who = g_strdup(who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3231 request->type = type;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3232
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3233 purple_request_field_group_add_field(group, field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3234 purple_request_fields_add_group(fields, group);
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3235 purple_request_fields(account, _("Select a Resource"), msg,
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3236 NULL, fields, _("Initiate Media"),
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3237 G_CALLBACK(jabber_media_ok_cb), _("Cancel"),
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3238 G_CALLBACK(jabber_media_cancel_cb),
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3239 account, who, NULL, request);
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3240
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3241 g_free(msg);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3242 return TRUE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3243 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3244 #endif
26365
34eb898478b4 Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26335
diff changeset
3245 return FALSE;
23787
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23785
diff changeset
3246 }
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23785
diff changeset
3247
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3248 PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who)
23787
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23785
diff changeset
3249 {
26334
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26279
diff changeset
3250 #ifdef USE_VV
26524
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3251 JabberStream *js = (JabberStream *)
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26477
diff changeset
3252 purple_account_get_connection(account)->proto_data;
23815
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23814
diff changeset
3253 JabberBuddy *jb;
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3254 JabberBuddyResource *jbr;
29022
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29021
diff changeset
3255 PurpleMediaCaps total = PURPLE_MEDIA_CAPS_NONE;
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3256 gchar *resource;
29021
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3257 GList *specific = NULL, *l;
23815
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23814
diff changeset
3258
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23814
diff changeset
3259 if (!js) {
26418
da651b0f40a1 Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26365
diff changeset
3260 purple_debug_info("jabber",
da651b0f40a1 Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26365
diff changeset
3261 "jabber_can_do_media: NULL stream\n");
23815
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23814
diff changeset
3262 return FALSE;
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23814
diff changeset
3263 }
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23814
diff changeset
3264
29021
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3265 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: 28943
diff changeset
3266
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3267 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: 28943
diff changeset
3268 /* 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: 28943
diff changeset
3269 * 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: 28943
diff changeset
3270 * someone who is offline. */
29022
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29021
diff changeset
3271 return total;
29021
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3272
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3273 } else if ((resource = jabber_get_resource(who)) != NULL) {
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3274 /* 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: 26418
diff changeset
3275 * default or anything, just do it */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3276 jbr = jabber_buddy_find_resource(jb, resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3277 g_free(resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3278
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3279 if (!jbr) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3280 purple_debug_error("jabber", "jabber_get_media_caps:"
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3281 " Can't find resource %s\n", who);
29022
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29021
diff changeset
3282 return total;
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3283 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3284
29021
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3285 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: 28943
diff changeset
3286
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3287 } else {
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3288 /* 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: 28943
diff changeset
3289 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: 28943
diff changeset
3290 }
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3291
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3292 for (; l; l = l->next) {
29022
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29021
diff changeset
3293 PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE;
29021
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3294 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: 28943
diff changeset
3295
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3296 if (jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3297 JINGLE_APP_RTP_SUPPORT_AUDIO))
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3298 caps |= PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION |
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3299 PURPLE_MEDIA_CAPS_AUDIO;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3300 if (jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3301 JINGLE_APP_RTP_SUPPORT_VIDEO))
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3302 caps |= PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION |
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3303 PURPLE_MEDIA_CAPS_VIDEO;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3304 if (caps & PURPLE_MEDIA_CAPS_AUDIO && caps &
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3305 PURPLE_MEDIA_CAPS_VIDEO)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3306 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3307 if (caps != PURPLE_MEDIA_CAPS_NONE) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3308 if (!jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3309 JINGLE_TRANSPORT_ICEUDP) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3310 !jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3311 JINGLE_TRANSPORT_RAWUDP)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3312 purple_debug_info("jingle-rtp", "Buddy doesn't "
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3313 "support the same transport types\n");
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3314 caps = PURPLE_MEDIA_CAPS_NONE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3315 } else
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3316 caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION |
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3317 PURPLE_MEDIA_CAPS_CHANGE_DIRECTION;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3318 }
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
3319 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE)) {
26432
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26418
diff changeset
3320 caps |= PURPLE_MEDIA_CAPS_AUDIO;
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
3321 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VIDEO))
26997
72bcdcb0629f Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26987
diff changeset
3322 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
72bcdcb0629f Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26987
diff changeset
3323 }
29022
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29021
diff changeset
3324
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29021
diff changeset
3325 total |= caps;
23814
d0ac3c438b71 Check remote JID's capabilities for audio and video XEP support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 23812
diff changeset
3326 }
24970
99055b8db16b Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24967
diff changeset
3327
29021
7cab6dc6b79c Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 28943
diff changeset
3328 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: 28943
diff changeset
3329 g_list_free(specific);
24970
99055b8db16b Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 24967
diff changeset
3330 }
26108
d6e23439b77c Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26086
diff changeset
3331
29022
9e735d7e2f1d Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29021
diff changeset
3332 return total;
26334
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26279
diff changeset
3333 #else
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26279
diff changeset
3334 return PURPLE_MEDIA_CAPS_NONE;
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26279
diff changeset
3335 #endif
23787
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23785
diff changeset
3336 }
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23785
diff changeset
3337
28534
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3338 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: 28517
diff changeset
3339 {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3340 JabberStream *js = gc->proto_data;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3341
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3342 if (js) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3343 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: 28517
diff changeset
3344 GList *iter;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3345 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: 28517
diff changeset
3346
28592
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28534
diff changeset
3347 /* 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: 28534
diff changeset
3348 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: 28534
diff changeset
3349 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: 28534
diff changeset
3350 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: 28534
diff changeset
3351 return TRUE;
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28534
diff changeset
3352
28534
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3353 /* 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: 28517
diff changeset
3354 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: 28517
diff changeset
3355 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: 28517
diff changeset
3356
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3357 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: 28517
diff changeset
3358 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: 28517
diff changeset
3359 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3360 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3361
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3362 if (has_resources_without_caps) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3363 /* there is at least one resource which we don't have caps for,
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3364 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: 28517
diff changeset
3365 return TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3366 } else {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3367 /* 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: 28517
diff changeset
3368 right caps */
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3369 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: 28517
diff changeset
3370 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: 28517
diff changeset
3371
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3372 if (jabber_resource_has_capability(jbr,
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3373 "http://jabber.org/protocol/si/profile/file-transfer")
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3374 && (jabber_resource_has_capability(jbr,
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
3375 NS_BYTESTREAMS)
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
3376 || jabber_resource_has_capability(jbr, NS_IBB))) {
28534
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3377 return TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3378 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3379 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3380 return FALSE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3381 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3382 } else {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3383 return TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3384 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3385 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28517
diff changeset
3386
29556
342ed5917f56 jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents: 29549
diff changeset
3387 static PurpleCmdRet
29549
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3388 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: 29503
diff changeset
3389 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: 29503
diff changeset
3390 {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3391 JabberStream *js = conv->account->gc->proto_data;
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3392
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3393 if (js->pep) {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3394 /* if no argument was given, unset mood */
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3395 if (!args | !args[0]) {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3396 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: 29503
diff changeset
3397 } else if (!args[1]) {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3398 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: 29503
diff changeset
3399 } else {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3400 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: 29503
diff changeset
3401 }
29556
342ed5917f56 jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents: 29549
diff changeset
3402
342ed5917f56 jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents: 29549
diff changeset
3403 return PURPLE_CMD_RET_OK;
29549
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3404 } else {
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3405 /* 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: 29503
diff changeset
3406 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: 29503
diff changeset
3407 _("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: 29503
diff changeset
3408 PURPLE_MESSAGE_ERROR, time(NULL));
29556
342ed5917f56 jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents: 29549
diff changeset
3409 return PURPLE_CMD_RET_FAILED;
29549
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3410 }
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3411 }
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3412
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3413 static void jabber_register_commands(PurplePlugin *plugin)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3414 {
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3415 GSList *commands = NULL;
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3416 PurpleCmdId id;
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3417 id = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3418 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3419 "prpl-jabber", jabber_cmd_chat_config,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3420 _("config: Configure a chat room."), NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3421 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3422
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3423 id = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3424 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3425 "prpl-jabber", jabber_cmd_chat_config,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3426 _("configure: Configure a chat room."), NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3427 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3428
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3429 id = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3430 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3431 "prpl-jabber", jabber_cmd_chat_nick,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3432 _("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
3433 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3434 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3435
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3436 id = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3437 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3438 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
28396
4a0d69b9d8a8 jabber: Correct the /part command's help.
Paul Aurich <paul@darkrain42.org>
parents: 28360
diff changeset
3439 jabber_cmd_chat_part, _("part [message]: Leave the room."),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3440 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3441 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3442
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3443 id = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3444 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3445 "prpl-jabber", jabber_cmd_chat_register,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3446 _("register: Register with a chat room."), NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3447 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3448
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3449 /* XXX: there needs to be a core /topic cmd, methinks */
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3450 id = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3451 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3452 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3453 jabber_cmd_chat_topic,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3454 _("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
3455 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3456 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3457
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3458 id = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3459 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3460 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3461 jabber_cmd_chat_ban,
22619
9a84976c8e76 Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents: 22459
diff changeset
3462 _("ban &lt;user&gt; [reason]: Ban a user from the room."),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3463 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3464 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3465
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3466 id = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3467 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3468 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3469 jabber_cmd_chat_affiliate,
26802
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26777
diff changeset
3470 _("affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get the users with an affiliation or set users' affiliation with the room."),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3471 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3472 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3473
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3474 id = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3475 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3476 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3477 jabber_cmd_chat_role,
27971
23dda7e57bcf Fix two strings as pointed out on translators@
Paul Aurich <paul@darkrain42.org>
parents: 27969
diff changeset
3478 _("role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the users with a role or set users' role with the room."),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3479 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3480 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3481
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3482 id = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3483 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3484 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3485 jabber_cmd_chat_invite,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3486 _("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
3487 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3488 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3489
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3490 id = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3491 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3492 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3493 jabber_cmd_chat_join,
22619
9a84976c8e76 Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents: 22459
diff changeset
3494 _("join: &lt;room&gt; [password]: Join a chat on this server."),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3495 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3496 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3497
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3498 id = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3499 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3500 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3501 jabber_cmd_chat_kick,
22619
9a84976c8e76 Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents: 22459
diff changeset
3502 _("kick &lt;user&gt; [reason]: Kick a user from the room."),
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3503 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3504 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3505
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3506 id = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
15822
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15765
diff changeset
3507 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3508 "prpl-jabber", jabber_cmd_chat_msg,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3509 _("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
3510 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3511 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3512
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3513 id = purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL,
17845
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
3514 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: 17841
diff changeset
3515 PURPLE_CMD_FLAG_PRPL_ONLY,
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
3516 "prpl-jabber", jabber_cmd_ping,
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17841
diff changeset
3517 _("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: 17841
diff changeset
3518 NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3519 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3520
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3521 id = purple_cmd_register("buzz", "w", PURPLE_CMD_P_PRPL,
25952
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25951
diff changeset
3522 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY |
25137
b3ab1c23cdf6 Register the /buzz command using PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS.
Marcus Lundblad <ml@update.uu.se>
parents: 25136
diff changeset
3523 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
17888
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17887
diff changeset
3524 "prpl-jabber", jabber_cmd_buzz,
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17887
diff changeset
3525 _("buzz: Buzz a user to get their attention"), NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3526 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id));
29549
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3527
2f73b0a78f4f jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents: 29503
diff changeset
3528 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: 29503
diff changeset
3529 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: 29503
diff changeset
3530 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: 29503
diff changeset
3531 "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: 29503
diff changeset
3532 _("mood: Set current user mood"), NULL);
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3533 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: 29557
diff changeset
3534
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3535 g_hash_table_insert(jabber_cmds, plugin, commands);
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3536 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3537
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3538 static void cmds_free_func(gpointer value)
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3539 {
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3540 GSList *commands = value;
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3541 while (commands) {
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3542 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: 29557
diff changeset
3543 commands = g_slist_delete_link(commands, commands);
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3544 }
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3545 }
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3546
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3547 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: 29557
diff changeset
3548 {
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3549 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: 29557
diff changeset
3550 }
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3551
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3552 /* IPC functions */
25029
2bf9bf49cea8 * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25028
diff changeset
3553
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3554 /**
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3555 * 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: 25151
diff changeset
3556 *
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3557 * @param account The PurpleAccount
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3558 * @param jid The full JID of the contact.
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3559 * @param feature The feature's namespace.
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3560 *
25029
2bf9bf49cea8 * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25028
diff changeset
3561 * @return TRUE if supports feature; else FALSE.
2bf9bf49cea8 * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25028
diff changeset
3562 */
25028
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25027
diff changeset
3563 static gboolean
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3564 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: 25151
diff changeset
3565 const gchar *feature)
25028
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25027
diff changeset
3566 {
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3567 PurpleConnection *gc = purple_account_get_connection(account);
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3568 JabberStream *js;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3569 JabberBuddy *jb;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3570 JabberBuddyResource *jbr;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3571 gchar *resource;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3572
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3573 if (!purple_account_is_connected(account))
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3574 return FALSE;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3575 js = gc->proto_data;
25151
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25146
diff changeset
3576
26932
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26917
diff changeset
3577 if (!(resource = jabber_get_resource(jid)) ||
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3578 !(jb = jabber_buddy_find(js, jid, FALSE)) ||
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3579 !(jbr = jabber_buddy_find_resource(jb, resource))) {
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3580 g_free(resource);
25151
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25146
diff changeset
3581 return FALSE;
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3582 }
25151
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25146
diff changeset
3583
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3584 g_free(resource);
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3585
25175
b1b1b75a922e Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents: 25167
diff changeset
3586 return jabber_resource_has_capability(jbr, feature);
25027
45816181b7de * fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25017
diff changeset
3587 }
45816181b7de * fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25017
diff changeset
3588
25030
61f37abc8a70 * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25029
diff changeset
3589 static void
25151
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25146
diff changeset
3590 jabber_ipc_add_feature(const gchar *feature)
25030
61f37abc8a70 * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25029
diff changeset
3591 {
25151
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25146
diff changeset
3592 if (!feature)
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25146
diff changeset
3593 return;
25031
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25030
diff changeset
3594 jabber_add_feature(feature, 0);
25151
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25146
diff changeset
3595
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25146
diff changeset
3596 /* send presence with new caps info for all connected accounts */
25032
7f6558c7a0a3 * implemented jabber_caps_broadcast_change() and finished jabber_ipc_add_feature() IPC function
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25031
diff changeset
3597 jabber_caps_broadcast_change();
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3598 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3599
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3600 static void
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3601 jabber_do_init(void)
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3602 {
26982
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3603 GHashTable *ui_info = purple_core_get_ui_info();
27055
2d258a809609 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <paul@darkrain42.org>
parents: 27054
diff changeset
3604 const gchar *ui_type;
27517
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27516
diff changeset
3605 const gchar *type = "pc"; /* default client type, if unknown or
26982
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3606 unspecified */
27517
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27516
diff changeset
3607 const gchar *ui_name = NULL;
29559
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3608 #ifdef HAVE_CYRUS_SASL
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3609 /* We really really only want to do this once per process */
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3610 static gboolean sasl_initialized = FALSE;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3611 #ifdef _WIN32
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3612 UINT old_error_mode;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3613 gchar *sasldir;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3614 #endif
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3615 int ret;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3616 #endif
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3617
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3618 /* 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: 29558
diff changeset
3619 #ifdef HAVE_CYRUS_SASL
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3620 if (!sasl_initialized) {
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3621 sasl_initialized = TRUE;
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3622 #ifdef _WIN32
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3623 sasldir = g_build_filename(wpurple_install_dir(), "sasl2", NULL);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3624 sasl_set_path(SASL_PATH_TYPE_PLUGIN, sasldir);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3625 g_free(sasldir);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3626 /* Suppress error popups for failing to load sasl plugins */
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3627 old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3628 #endif
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3629 if ((ret = sasl_client_init(NULL)) != SASL_OK) {
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3630 purple_debug_error("xmpp", "Error (%d) initializing SASL.\n", ret);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3631 }
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3632 #ifdef _WIN32
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3633 /* Restore the original error mode */
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3634 SetErrorMode(old_error_mode);
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3635 #endif
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3636 }
93d32ecf3186 jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents: 29558
diff changeset
3637 #endif
26982
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3638
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3639 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: 29557
diff changeset
3640
27055
2d258a809609 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <paul@darkrain42.org>
parents: 27054
diff changeset
3641 ui_type = ui_info ? g_hash_table_lookup(ui_info, "client_type") : NULL;
26982
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3642 if (ui_type) {
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3643 if (strcmp(ui_type, "pc") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3644 strcmp(ui_type, "console") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3645 strcmp(ui_type, "phone") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3646 strcmp(ui_type, "handheld") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3647 strcmp(ui_type, "web") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3648 strcmp(ui_type, "bot") == 0) {
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3649 type = ui_type;
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3650 }
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 26981
diff changeset
3651 }
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
3652
27517
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27516
diff changeset
3653 if (ui_info)
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27516
diff changeset
3654 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: 27516
diff changeset
3655 if (ui_name == NULL)
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27516
diff changeset
3656 ui_name = PACKAGE;
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27516
diff changeset
3657
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27516
diff changeset
3658 jabber_add_identity("client", type, NULL, ui_name);
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
3659
25028
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25027
diff changeset
3660 /* initialize jabber_features list */
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
3661 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: 28648
diff changeset
3662 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: 28648
diff changeset
3663 jabber_add_feature(NS_ENTITY_TIME, 0);
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
3664 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: 23285
diff changeset
3665 jabber_add_feature("jabber:x:conference", 0);
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
3666 jabber_add_feature(NS_BYTESTREAMS, 0);
25672
69495c6f12af Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents: 25671
diff changeset
3667 jabber_add_feature("http://jabber.org/protocol/caps", 0);
69495c6f12af Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents: 25671
diff changeset
3668 jabber_add_feature("http://jabber.org/protocol/chatstates", 0);
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
3669 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: 28648
diff changeset
3670 jabber_add_feature(NS_DISCO_ITEMS, 0);
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
3671 jabber_add_feature(NS_IBB, 0);
25017
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
3672 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: 23285
diff changeset
3673 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: 23285
diff changeset
3674 jabber_add_feature("http://jabber.org/protocol/si", 0);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23285
diff changeset
3675 jabber_add_feature("http://jabber.org/protocol/si/profile/file-transfer", 0);
28650
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 28648
diff changeset
3676 jabber_add_feature(NS_XHTML_IM, 0);
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
3677 jabber_add_feature(NS_PING, 0);
26447
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26446
diff changeset
3678
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3679 /* Buzz/Attention */
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
3680 jabber_add_feature(NS_ATTENTION, jabber_buzz_isenabled);
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3681
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3682 /* Bits Of Binary */
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
3683 jabber_add_feature(NS_BOB, 0);
26803
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26802
diff changeset
3684
26447
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26446
diff changeset
3685 /* Jingle features! */
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26446
diff changeset
3686 jabber_add_feature(JINGLE, 0);
26454
9131368ba4be Advertise ICEUDP only when libnice is available
Paul Aurich <paul@darkrain42.org>
parents: 26453
diff changeset
3687
26453
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3688 #ifdef USE_VV
28646
9feec7d1d95c jabber: Add the missing file and fix up the Google session namespaces
Paul Aurich <paul@darkrain42.org>
parents: 28645
diff changeset
3689 jabber_add_feature(NS_GOOGLE_PROTOCOL_SESSION, jabber_audio_enabled);
28645
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28592
diff changeset
3690 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: 28592
diff changeset
3691 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: 28592
diff changeset
3692 jabber_add_feature(NS_GOOGLE_CAMERA, jabber_video_enabled);
28281
5f97830906bc Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <will.thompson@collabora.co.uk>
parents: 28096
diff changeset
3693 jabber_add_feature(JINGLE_APP_RTP, 0);
26457
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26454
diff changeset
3694 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: 26454
diff changeset
3695 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled);
28281
5f97830906bc Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <will.thompson@collabora.co.uk>
parents: 28096
diff changeset
3696 jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0);
26737
8b7d1aed6d59 merge of '8ddbfe5d6f5c2455497d11ccbfff769ed4e9fad4'
Paul Aurich <paul@darkrain42.org>
parents: 26736 26455
diff changeset
3697 jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0);
29132
44e949b676f0 Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents: 28360
diff changeset
3698
44e949b676f0 Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents: 28360
diff changeset
3699 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: 28360
diff changeset
3700 G_CALLBACK(jabber_caps_broadcast_change), NULL);
26453
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26451
diff changeset
3701 #endif
26447
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26446
diff changeset
3702
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3703 /* 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: 29556
diff changeset
3704 jabber_iq_init();
29560
13f320cde14f jabber: Heavily refactor jabber_presence_parse(). It's still not short enough.
Paul Aurich <paul@darkrain42.org>
parents: 29559
diff changeset
3705 jabber_presence_init();
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3706 jabber_caps_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3707 /* 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: 29556
diff changeset
3708 jabber_pep_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3709 jabber_data_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3710 jabber_bosh_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3711
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3712 /* 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: 29556
diff changeset
3713
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3714 jabber_ibb_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3715 jabber_si_init();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3716
28696
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28517
diff changeset
3717 jabber_auth_init();
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3718 }
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3719
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3720 static void
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3721 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: 29556
diff changeset
3722 {
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3723 /* 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: 29556
diff changeset
3724 jabber_bosh_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3725 jabber_data_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3726 jabber_si_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3727 jabber_ibb_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3728 /* 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: 29556
diff changeset
3729 jabber_pep_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3730 jabber_caps_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3731 jabber_presence_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3732 jabber_iq_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3733
29755
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 29754
diff changeset
3734 #ifdef USE_VV
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 29754
diff changeset
3735 g_signal_handlers_disconnect_by_func(G_OBJECT(purple_media_manager_get()),
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 29754
diff changeset
3736 G_CALLBACK(jabber_caps_broadcast_change), NULL);
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 29754
diff changeset
3737 #endif
9134be6baaef jabber: --more leaks
Paul Aurich <paul@darkrain42.org>
parents: 29754
diff changeset
3738
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3739 jabber_auth_uninit();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3740 jabber_features_destroy();
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3741 jabber_identities_destroy();
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3742
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3743 g_hash_table_destroy(jabber_cmds);
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3744 jabber_cmds = NULL;
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3745 }
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3746
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3747 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: 29556
diff changeset
3748 {
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3749 ++plugin_ref;
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3750
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3751 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: 29556
diff changeset
3752 jabber_do_init();
28696
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28517
diff changeset
3753
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3754 jabber_register_commands(plugin);
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3755
25028
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25027
diff changeset
3756 /* IPC functions */
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25027
diff changeset
3757 purple_plugin_ipc_register(plugin, "contact_has_feature", PURPLE_CALLBACK(jabber_ipc_contact_has_feature),
25164
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3758 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER,
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3759 purple_value_new(PURPLE_TYPE_BOOLEAN), 3,
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25151
diff changeset
3760 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT),
25028
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25027
diff changeset
3761 purple_value_new(PURPLE_TYPE_STRING),
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25027
diff changeset
3762 purple_value_new(PURPLE_TYPE_STRING));
26870
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: 26803
diff changeset
3763
25031
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25030
diff changeset
3764 purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature),
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25030
diff changeset
3765 purple_marshal_VOID__POINTER,
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25030
diff changeset
3766 NULL, 1,
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25030
diff changeset
3767 purple_value_new(PURPLE_TYPE_STRING));
27004
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27002
diff changeset
3768
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27002
diff changeset
3769 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: 27002
diff changeset
3770 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: 27002
diff changeset
3771 purple_marshal_VOID__POINTER_POINTER,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27002
diff changeset
3772 NULL, 2,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27002
diff changeset
3773 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: 27002
diff changeset
3774 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: 27002
diff changeset
3775
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27002
diff changeset
3776 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: 27002
diff changeset
3777 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: 27002
diff changeset
3778 purple_marshal_VOID__POINTER_POINTER,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27002
diff changeset
3779 NULL, 2,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27002
diff changeset
3780 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: 27002
diff changeset
3781 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3782
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3783 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: 29556
diff changeset
3784 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: 29556
diff changeset
3785 NULL, 2,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3786 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: 29556
diff changeset
3787 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: 29556
diff changeset
3788
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3789 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: 29556
diff changeset
3790 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: 29556
diff changeset
3791 NULL, 2,
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3792 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: 29556
diff changeset
3793 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: 29556
diff changeset
3794
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3795 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: 29556
diff changeset
3796 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: 29556
diff changeset
3797 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: 29556
diff changeset
3798 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: 29556
diff changeset
3799
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3800
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3801 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: 29556
diff changeset
3802 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: 29556
diff changeset
3803 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: 29556
diff changeset
3804 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: 29556
diff changeset
3805
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3806 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: 29556
diff changeset
3807 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: 29556
diff changeset
3808 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: 29556
diff changeset
3809 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: 29556
diff changeset
3810
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3811 /*
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3812 * 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: 29556
diff changeset
3813 * warned!
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3814 */
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3815 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: 29556
diff changeset
3816 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: 29556
diff changeset
3817 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: 29556
diff changeset
3818
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3819 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: 29556
diff changeset
3820 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: 29556
diff changeset
3821 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: 29556
diff changeset
3822 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: 29556
diff changeset
3823
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3824 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: 29556
diff changeset
3825 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: 29556
diff changeset
3826 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: 29556
diff changeset
3827 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: 29556
diff changeset
3828 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: 29556
diff changeset
3829 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: 29556
diff changeset
3830 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: 29556
diff changeset
3831 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: 29556
diff changeset
3832 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: 29556
diff changeset
3833
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3834 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: 29556
diff changeset
3835 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: 29556
diff changeset
3836 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: 29556
diff changeset
3837 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: 29556
diff changeset
3838 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: 29556
diff changeset
3839 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: 29556
diff changeset
3840 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: 29556
diff changeset
3841 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: 29556
diff changeset
3842
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3843 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: 29556
diff changeset
3844 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: 29556
diff changeset
3845 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: 29556
diff changeset
3846 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: 29556
diff changeset
3847 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: 29556
diff changeset
3848 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: 29556
diff changeset
3849 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: 29556
diff changeset
3850 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: 29556
diff changeset
3851
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3852 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: 29556
diff changeset
3853 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: 29556
diff changeset
3854 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: 29556
diff changeset
3855 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: 29556
diff changeset
3856 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: 29556
diff changeset
3857 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: 29556
diff changeset
3858 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE));
15373
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3859 }
25167
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
3860
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3861 void jabber_plugin_uninit(PurplePlugin *plugin)
25167
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
3862 {
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3863 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: 29556
diff changeset
3864
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3865 purple_signals_unregister_by_instance(plugin);
28517
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28515
diff changeset
3866 purple_plugin_ipc_unregister_all(plugin);
26870
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: 26803
diff changeset
3867
29558
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3868 jabber_unregister_commands(plugin);
d93676b59db1 jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents: 29557
diff changeset
3869
29557
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3870 --plugin_ref;
a694731e8b3f jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents: 29556
diff changeset
3871 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: 29556
diff changeset
3872 jabber_do_uninit();
25167
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25165
diff changeset
3873 }