annotate libpurple/protocols/jabber/jabber.c @ 29190:4491a662d527

merged with im.pidgin.pidgin
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Thu, 17 Dec 2009 16:50:12 +0900
parents 5c77b620375c 20f4bce8894d
children 31d9677b0c36
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /*
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2 * purple - Jabber Protocol Plugin
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3 *
28398
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28331
diff changeset
4 * Purple is the legal property of its developers, whose names are too numerous
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28331
diff changeset
5 * to list here. Please refer to the COPYRIGHT file distributed with this
c585572e80dd Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents: 28331
diff changeset
6 * source distribution.
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
8 * This program is free software; you can redistribute it and/or modify
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * it under the terms of the GNU General Public License as published by
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 * the Free Software Foundation; either version 2 of the License, or
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 * (at your option) any later version.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * This program is distributed in the hope that it will be useful,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 * GNU General Public License for more details.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * You should have received a copy of the GNU General Public License
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 * along with this program; if not, write to the Free Software
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19200
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 #include "internal.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
24
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 #include "account.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
26 #include "accountopt.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
27 #include "blist.h"
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
28 #include "core.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
29 #include "cmds.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30 #include "connection.h"
15891
87ea711b9781 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents: 15823
diff changeset
31 #include "conversation.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 #include "debug.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 #include "dnssrv.h"
25817
9195955395b6 Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents: 24858
diff changeset
34 #include "imgstore.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 #include "message.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 #include "notify.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 #include "pluginpref.h"
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
38 #include "privacy.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 #include "proxy.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40 #include "prpl.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41 #include "request.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42 #include "server.h"
25963
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
43 #include "status.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44 #include "util.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45 #include "version.h"
15891
87ea711b9781 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents: 15823
diff changeset
46 #include "xmlnode.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 #include "auth.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 #include "buddy.h"
25987
c4fd9222dda1 propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
parents: 25443 25835
diff changeset
50 #include "caps.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 #include "chat.h"
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23182
diff changeset
52 #include "data.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 #include "disco.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 #include "google.h"
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
55 #include "ibb.h"
15374
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"
17562
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
63 #include "ping.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64 #include "si.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 #include "xdata.h"
17561
a75079eae085 added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents: 17560
diff changeset
66 #include "pep.h"
17610
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
67 #include "adhoccommands.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68
26014
bd598b606ca4 Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25729
diff changeset
69 #include "jingle/jingle.h"
bd598b606ca4 Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25729
diff changeset
70 #include "jingle/rtp.h"
23445
4ac5db6e39f3 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents: 23182
diff changeset
71
21538
4e5bef6c3379 Fix #3669
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21418
diff changeset
72 GList *jabber_features = NULL;
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
73 GList *jabber_identities = NULL;
28893
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28891
diff changeset
74 static GSList *jabber_cmds = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
75
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
76 static void jabber_unregister_account_cb(JabberStream *js);
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
77 static void try_srv_connect(JabberStream *js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
78
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79 static void jabber_stream_init(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 char *open_stream;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
83 open_stream = g_strdup_printf("<stream:stream to='%s' "
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
84 "xmlns='" NS_XMPP_CLIENT "' "
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
85 "xmlns:stream='" NS_XMPP_STREAMS "' "
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 "version='1.0'>",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87 js->user->domain);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
88 /* setup the parser fresh for each stream */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
89 jabber_parser_setup(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 jabber_send_raw(js, open_stream, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
91 js->reinit = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 g_free(open_stream);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
93 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95 static void
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
96 jabber_session_initialized_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
97 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
98 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
99 {
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
100 if (type == JABBER_IQ_RESULT) {
25826
af2b883df9a3 Wait until receiving the roster to tell the core we're logged in
Paul Aurich <paul@darkrain42.org>
parents: 25825
diff changeset
101 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
102 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
103 jabber_unregister_account_cb(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104 } else {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
105 purple_connection_error_reason(js->gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
106 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
107 ("Error initializing session"));
15374
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
111 static void jabber_session_init(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113 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
114 xmlnode *session;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
115
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
116 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
117
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
118 session = xmlnode_new_child(iq->node, "session");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
119 xmlnode_set_namespace(session, NS_XMPP_SESSION);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
120
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
121 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
122 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
123
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
124 static void jabber_bind_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
125 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
126 xmlnode *packet, gpointer data)
15374
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 xmlnode *bind;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
129
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
130 if (type == JABBER_IQ_RESULT &&
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
131 (bind = xmlnode_get_child_with_namespace(packet, "bind", NS_XMPP_BIND))) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
132 xmlnode *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
133 char *full_jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
134 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
135 jabber_id_free(js->user);
28131
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
136
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
137 js->user = jabber_id_new(full_jid);
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
138 if (js->user == NULL) {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
139 purple_connection_error_reason(js->gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
140 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
141 _("Invalid response from server"));
28131
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
142 g_free(full_jid);
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
143 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
144 }
28131
478a3866ea90 jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents: 28125
diff changeset
145
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28131
diff changeset
146 js->user_jb = jabber_buddy_find(js, full_jid, TRUE);
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28131
diff changeset
147 js->user_jb->subscription |= JABBER_SUB_BOTH;
24155
a61c017d3a99 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23988
diff changeset
148
a61c017d3a99 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23988
diff changeset
149 purple_connection_set_display_name(js->gc, full_jid);
a61c017d3a99 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23988
diff changeset
150
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
151 g_free(full_jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
152 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
153 } else {
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
154 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
155 char *msg = jabber_parse_error(js, packet, &reason);
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
156 purple_connection_error_reason(js->gc, reason, msg);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
157 g_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
158 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
159
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
160 jabber_session_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
161 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
162
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
163 static char *jabber_prep_resource(char *input) {
25097
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
164 char hostname[256], /* current hostname */
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
165 *dot = NULL;
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
166
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
167 /* Empty resource == don't send any */
24834
41e69c65b006 Slightly modified version of a fix fqueze proposed for a crash with the empty
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24820
diff changeset
168 if (input == NULL || *input == '\0')
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
169 return NULL;
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
170
24514
6b9552b09de0 Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24508
diff changeset
171 if (strstr(input, "__HOSTNAME__") == NULL)
24531
fb5a11ec8be6 darkrain again
Ka-Hing Cheung <khc@hxbc.us>
parents: 24514
diff changeset
172 return g_strdup(input);
24514
6b9552b09de0 Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24508
diff changeset
173
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
174 /* Replace __HOSTNAME__ with hostname */
24505
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
175 if (gethostname(hostname, sizeof(hostname) - 1)) {
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
176 purple_debug_warning("jabber", "gethostname: %s\n", g_strerror(errno));
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
177 /* according to glibc doc, the only time an error is returned
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
178 is if the hostname is longer than the buffer, in which case
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
179 glibc 2.2+ would still fill the buffer with partial
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
180 hostname, so maybe we want to detect that and use it
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
181 instead
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
182 */
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
183 strcpy(hostname, "localhost");
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
184 }
24505
9bb624e345aa me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents: 24501
diff changeset
185 hostname[sizeof(hostname) - 1] = '\0';
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
186
25097
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
187 /* We want only the short hostname, not the FQDN - this will prevent the
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
188 * resource string from being unreasonably long on systems which stuff the
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
189 * whole FQDN in the hostname */
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
190 if((dot = strchr(hostname, '.')))
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
191 dot = '\0';
43055addf135 Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents: 25066
diff changeset
192
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
193 return purple_strreplace(input, "__HOSTNAME__", hostname);
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
194 }
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
195
25607
f775f6021654 * using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25602
diff changeset
196 void jabber_stream_features_parse(JabberStream *js, xmlnode *packet)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
197 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
198 if(xmlnode_get_child(packet, "starttls")) {
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
199 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: 28681
diff changeset
200 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
201 return;
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
202 }
28891
4fd0baa32a9e jabber: Fix a few places where the default for require_tls was wrong.
Paul Aurich <paul@darkrain42.org>
parents: 28889
diff changeset
203 } else if(purple_account_get_bool(js->gc->account, "require_tls", JABBER_DEFAULT_REQUIRE_TLS) && !jabber_stream_is_ssl(js)) {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
204 purple_connection_error_reason(js->gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
205 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
206 _("You require encryption, but it is not available on this server."));
17623
a8420fd18545 Added an option to require SSL or TLS when connecting to an XMPP server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17621
diff changeset
207 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
208 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
209
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
210 if(js->registration) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
211 jabber_register_start(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
212 } else if(xmlnode_get_child(packet, "mechanisms")) {
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
213 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
214 jabber_auth_start(js, packet);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
215 } else if(xmlnode_get_child(packet, "bind")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
216 xmlnode *bind, *resource;
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
217 char *requested_resource;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
218 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
219 bind = xmlnode_new_child(iq->node, "bind");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
220 xmlnode_set_namespace(bind, NS_XMPP_BIND);
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
221 requested_resource = jabber_prep_resource(js->user->resource);
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
222
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
223 if (requested_resource != NULL) {
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
224 resource = xmlnode_new_child(bind, "resource");
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
225 xmlnode_insert_data(resource, requested_resource, -1);
24614
641fe4c2b2a5 Use g_free instead of free.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24531
diff changeset
226 g_free(requested_resource);
24500
7ec139c84d36 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24409
diff changeset
227 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229 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
230
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231 jabber_iq_send(iq);
29142
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 29140
diff changeset
232 } else if (xmlnode_get_child_with_namespace(packet, "ver", NS_ROSTER_VERSIONING)) {
0f7025534fc5 jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents: 29140
diff changeset
233 js->server_caps |= JABBER_CAP_ROSTER_VERSIONING;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234 } 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
235 /* 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
236 * 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
237 * 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
238 * connecting to an XMPP server. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
239 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
29078
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28893
diff changeset
240 jabber_auth_start_old(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
241 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
242 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
243
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
244 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
245 {
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
246 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
247 char *msg = jabber_parse_error(js, packet, &reason);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
249 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
250
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251 g_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
252 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
253
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
254 static void tls_init(JabberStream *js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
255
17621
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
256 void jabber_process_packet(JabberStream *js, xmlnode **packet)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
257 {
15919
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15918
diff changeset
258 const char *xmlns;
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15918
diff changeset
259
28893
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28891
diff changeset
260 purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-receiving-xmlnode", js->gc, packet);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
261
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
262 /* if the signal leaves us with a null packet, we're done */
17621
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
263 if(NULL == *packet)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
264 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
265
17621
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
266 xmlns = xmlnode_get_namespace(*packet);
15919
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15918
diff changeset
267
17621
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
268 if(!strcmp((*packet)->name, "iq")) {
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
269 jabber_iq_parse(js, *packet);
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
270 } else if(!strcmp((*packet)->name, "presence")) {
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
271 jabber_presence_parse(js, *packet);
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
272 } else if(!strcmp((*packet)->name, "message")) {
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
273 jabber_message_parse(js, *packet);
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
274 } else if(!strcmp((*packet)->name, "stream:features")) {
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
275 jabber_stream_features_parse(js, *packet);
21538
4e5bef6c3379 Fix #3669
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21418
diff changeset
276 } else if (!strcmp((*packet)->name, "features") && xmlns &&
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
277 !strcmp(xmlns, NS_XMPP_STREAMS)) {
17621
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
278 jabber_stream_features_parse(js, *packet);
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
279 } else if(!strcmp((*packet)->name, "stream:error") ||
21538
4e5bef6c3379 Fix #3669
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21418
diff changeset
280 (!strcmp((*packet)->name, "error") && xmlns &&
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
281 !strcmp(xmlns, NS_XMPP_STREAMS)))
15919
26593bef6568 Minor code cleanup
Mark Doliner <mark@kingant.net>
parents: 15918
diff changeset
282 {
17621
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
283 jabber_stream_handle_error(js, *packet);
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
284 } else if(!strcmp((*packet)->name, "challenge")) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
285 if(js->state == JABBER_STREAM_AUTHENTICATING)
17621
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
286 jabber_auth_handle_challenge(js, *packet);
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
287 } else if(!strcmp((*packet)->name, "success")) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
288 if(js->state == JABBER_STREAM_AUTHENTICATING)
17621
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
289 jabber_auth_handle_success(js, *packet);
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
290 } else if(!strcmp((*packet)->name, "failure")) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291 if(js->state == JABBER_STREAM_AUTHENTICATING)
17621
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
292 jabber_auth_handle_failure(js, *packet);
bbd92ee894f2 Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17620
diff changeset
293 } else if(!strcmp((*packet)->name, "proceed")) {
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
294 if (js->state == JABBER_STREAM_INITIALIZING_ENCRYPTION && !js->gsc)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295 tls_init(js);
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
296 else
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
297 purple_debug_warning("jabber", "Ignoring spurious <proceed/>\n");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
298 } else {
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28888
diff changeset
299 purple_debug_warning("jabber", "Unknown packet: %s\n", (*packet)->name);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
300 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
301 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
302
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 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
304 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 int ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
306
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
307 if (js->gsc)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
308 ret = purple_ssl_write(js->gsc, data, len);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
309 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
310 ret = write(js->fd, data, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
311
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
312 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
313 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
314
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
315 static void jabber_send_cb(gpointer data, gint source, PurpleInputCondition cond)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
316 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
317 JabberStream *js = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
318 int ret, writelen;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
319 writelen = purple_circ_buffer_get_max_read(js->write_buffer);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
320
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
321 if (writelen == 0) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
322 purple_input_remove(js->writeh);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
323 js->writeh = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
324 return;
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
327 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
328
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
329 if (ret < 0 && errno == EAGAIN)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
330 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
331 else if (ret <= 0) {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
332 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
333 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
334 purple_connection_error_reason(js->gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
335 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
336 g_free(tmp);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
337 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
338 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
340 purple_circ_buffer_mark_read(js->write_buffer, ret);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
341 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
342
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
343 static gboolean do_jabber_send_raw(JabberStream *js, const char *data, int len)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
345 int ret;
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
346 gboolean success = TRUE;
15374
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 (len == -1)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
349 len = strlen(data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
350
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
351 if (js->writeh == 0)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
352 ret = jabber_do_send(js, data, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
353 else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
354 ret = -1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
355 errno = EAGAIN;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
356 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
357
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
358 if (ret < 0 && errno != EAGAIN) {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
359 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
360 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
361 purple_connection_error_reason(js->gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
362 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
363 g_free(tmp);
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
364 success = FALSE;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
365 } else if (ret < len) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
366 if (ret < 0)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
367 ret = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
368 if (js->writeh == 0)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
369 js->writeh = purple_input_add(
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
370 js->gsc ? js->gsc->fd : js->fd,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
371 PURPLE_INPUT_WRITE, jabber_send_cb, js);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
372 purple_circ_buffer_append(js->write_buffer,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
373 data + ret, len - ret);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
374 }
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
375
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
376 return success;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
377 }
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
379 void jabber_send_raw(JabberStream *js, const char *data, int len)
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
380 {
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
381 /* because printing a tab to debug every minute gets old */
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
382 if(strcmp(data, "\t")) {
28888
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
383 const char *username;
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
384 char *text = NULL, *last_part = NULL, *tag_start = NULL;
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
385
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
386 /* 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: 24834
diff changeset
387 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: 24834
diff changeset
388 /* Either <auth> or <query><password>... */
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
389 (((tag_start = strstr(data, "<auth ")) &&
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
390 strstr(data, "xmlns='" NS_XMPP_SASL "'")) ||
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
391 ((tag_start = strstr(data, "<query ")) &&
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
392 strstr(data, "xmlns='jabber:iq:auth'>") &&
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
393 (tag_start = strstr(tag_start, "<password>"))))) {
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
394 char *data_start, *tag_end = strchr(tag_start, '>');
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
395 text = g_strdup(data);
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
396
25884
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
397 /* Better to print out some wacky debugging than crash
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
398 * due to a plugin sending bad xml */
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
399 if (tag_end == NULL)
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
400 tag_end = tag_start;
b9a90f34b780 *** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25872
diff changeset
401
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
402 data_start = text + (tag_end - data) + 1;
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
403
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
404 last_part = strchr(data_start, '<');
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
405 *data_start = '\0';
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
406 }
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
407
28888
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
408 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: 28811
diff changeset
409 if (!username)
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
410 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: 28811
diff changeset
411
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
412 purple_debug_misc("jabber", "Sending%s (%s): %s%s%s\n",
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
413 jabber_stream_is_ssl(js) ? " (ssl)" : "", username,
562fd22dbe89 jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents: 28811
diff changeset
414 text ? text : data,
24858
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
415 last_part ? "password removed" : "",
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
416 last_part ? last_part : "");
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
417
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
418 g_free(text);
3a4070656d61 Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents: 24834
diff changeset
419 }
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
420
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
421 /* If we've got a security layer, we need to encode the data,
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
422 * splitting it on the maximum buffer length negotiated */
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
423
28893
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28891
diff changeset
424 purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-sending-text", js->gc, &data);
23378
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
425 if (data == NULL)
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
426 return;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
427
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
428 #ifdef HAVE_CYRUS_SASL
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
429 if (js->sasl_maxbuf>0) {
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
430 int pos = 0;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
431
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
432 if (!js->gsc && js->fd<0)
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
433 return;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
434
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
435 if (len == -1)
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
436 len = strlen(data);
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
437
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
438 while (pos < len) {
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
439 int towrite;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
440 const char *out;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
441 unsigned olen;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
442
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
443 towrite = MIN((len - pos), js->sasl_maxbuf);
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
444
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
445 sasl_encode(js->sasl, &data[pos], towrite, &out, &olen);
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
446 pos += towrite;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
447
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
448 if (!do_jabber_send_raw(js, out, olen))
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
449 break;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
450 }
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
451 return;
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
452 }
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
453 #endif
e12600d6b902 Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23287
diff changeset
454
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 if (len == -1)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456 len = strlen(data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
457
28125
53f0956f76dc jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents: 28115
diff changeset
458 if (js->bosh)
26530
d4af753e0e33 Pass all messages to BOSH as text, so they pass through the sending-text
Paul Aurich <paul@darkrain42.org>
parents: 26529
diff changeset
459 jabber_bosh_connection_send_raw(js->bosh, data);
25777
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
460 else
25717
907ca9a36fe0 explicit merge of '714a7c7f903d11c96ffade34966121da549d998f'
Paul Aurich <paul@darkrain42.org>
parents: 25608 25716
diff changeset
461 do_jabber_send_raw(js, data, len);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
462 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
463
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
464 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
465 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
466 JabberStream *js = (JabberStream*)gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
467 jabber_send_raw(js, buf, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
468 return len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
469 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
470
27088
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
471 void jabber_send_signal_cb(PurpleConnection *pc, xmlnode **packet,
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
472 gpointer unused)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
473 {
27991
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
474 JabberStream *js;
25467
be098f796b32 yaz patch has been applied.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 16240
diff changeset
475 char *txt, *utf;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
476 int len;
27773
0f3a131d23da - import nosuke's hash 244 patch and others to yahoo plugin
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 27768
diff changeset
477 gsize utflen;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
478
27088
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
479 if (NULL == packet)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
480 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
481
29021
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
482 if (!PURPLE_CONNECTION_IS_VALID(pc))
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
483 return;
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
484
27991
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
485 js = purple_connection_get_protocol_data(pc);
29021
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
486
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
487 if (NULL == js)
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
488 return;
7622d3f86752 Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents: 28971
diff changeset
489
28125
53f0956f76dc jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents: 28115
diff changeset
490 if (js->bosh)
27991
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
491 if (g_str_equal((*packet)->name, "message") ||
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
492 g_str_equal((*packet)->name, "iq") ||
e8e056876e39 Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents: 27984
diff changeset
493 g_str_equal((*packet)->name, "presence"))
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
494 xmlnode_set_namespace(*packet, NS_XMPP_CLIENT);
27088
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
495 txt = xmlnode_to_str(*packet, &len);
25467
be098f796b32 yaz patch has been applied.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 16240
diff changeset
496 utf = botch_utf(txt, len, &utflen); //yaz
28010
0754698c49f4 merged with im.pidgin.pidgin
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 27967 27991
diff changeset
497 jabber_send_raw(js, utf, utflen);
25467
be098f796b32 yaz patch has been applied.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 16240
diff changeset
498 g_free(txt); g_free(utf);
15374
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
27088
d31af94a715d Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents: 27086
diff changeset
501 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
502 {
28893
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28891
diff changeset
503 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
504 }
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
505
25925
42dd7e591031 Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents: 25050
diff changeset
506 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
507 {
21973
966f98d4b04b Masca noticed that dc6923294f5f33ff7a52a998e1b9e9ad47be0211 made jabber.c not
Will Thompson <will.thompson@collabora.co.uk>
parents: 21964
diff changeset
508 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
509 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
510 _("Ping timed out"));
27151
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
511 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
512 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
513 }
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
514
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
515 void jabber_keepalive(PurpleConnection *gc)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
516 {
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
517 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
518
27151
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
519 if (js->keepalive_timeout == 0) {
26999
6b0e150f2276 Stop trying to be clever with XMPP keepalive pings.
Paul Aurich <paul@darkrain42.org>
parents: 26956
diff changeset
520 jabber_keepalive_ping(js);
25925
42dd7e591031 Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents: 25050
diff changeset
521 js->keepalive_timeout = purple_timeout_add_seconds(120,
42dd7e591031 Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents: 25050
diff changeset
522 (GSourceFunc)(jabber_keepalive_timeout), gc);
22448
8ec6ac1b9e26 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evan.s@dreskin.net>
parents: 22432
diff changeset
523 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
524 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
525
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
526 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
527 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
528 PurpleInputCondition cond)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
529 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
530 PurpleConnection *gc = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
531 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
532 int len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
533 static char buf[4096];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
534
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
535 /* TODO: It should be possible to make this check unnecessary */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
536 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
537 purple_ssl_close(gsc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
538 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
539 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
540
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
541 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
542 gc->last_received = time(NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
543 buf[len] = '\0';
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28888
diff changeset
544 purple_debug_info("jabber", "Recv (ssl)(%d): %s\n", len, buf);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
545 jabber_parser_process(js, buf, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
546 if(js->reinit)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
547 jabber_stream_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
548 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
549
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
550 if(len < 0 && errno == EAGAIN)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
551 return;
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
552 else {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
553 gchar *tmp;
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
554 if (len == 0)
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
555 tmp = g_strdup_printf(_("Server closed the connection"));
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
556 else
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
557 tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
558 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
559 purple_connection_error_reason(js->gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
560 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
561 g_free(tmp);
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
562 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
563 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
564
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
565 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
566 jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
567 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
568 PurpleConnection *gc = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
569 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
570 int len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
571 static char buf[4096];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
572
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
573 if(!PURPLE_CONNECTION_IS_VALID(gc))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
574 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
575
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
576 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
577 gc->last_received = time(NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
578 #ifdef HAVE_CYRUS_SASL
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
579 if (js->sasl_maxbuf>0) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
580 const char *out;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
581 unsigned int olen;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
582 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
583 if (olen>0) {
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28888
diff changeset
584 purple_debug_info("jabber", "RecvSASL (%u): %s\n", olen, out);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
585 jabber_parser_process(js,out,olen);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
586 if(js->reinit)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
587 jabber_stream_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
588 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
589 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
590 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
591 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
592 buf[len] = '\0';
28889
fa7f3426ed13 jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents: 28888
diff changeset
593 purple_debug_info("jabber", "Recv (%d): %s\n", len, buf);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
594 jabber_parser_process(js, buf, len);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
595 if(js->reinit)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
596 jabber_stream_init(js);
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
597 } else if(len < 0 && errno == EAGAIN) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
598 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
599 } else {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
600 gchar *tmp;
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
601 if (len == 0)
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
602 tmp = g_strdup_printf(_("Server closed the connection"));
23398
47b709962aab Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents: 23391
diff changeset
603 else
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
604 tmp = g_strdup_printf(_("Lost connection with server: %s"),
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
605 g_strerror(errno));
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
606 purple_connection_error_reason(js->gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
607 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
608 g_free(tmp);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
609 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
610 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
611
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
612 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
613 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
614 PurpleInputCondition cond)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
615 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
616 PurpleConnection *gc = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
617 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
618
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
619 /* TODO: It should be possible to make this check unnecessary */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
620 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
621 purple_ssl_close(gsc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
622 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: 19722
diff changeset
623 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
624
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
625 js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
626
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
627 if(js->state == JABBER_STREAM_CONNECTING)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
628 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
629 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
630 purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
631
17606
108f3b42976f Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17603
diff changeset
632 /* Tell the app that we're doing encryption */
108f3b42976f Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17603
diff changeset
633 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
634 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
635
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
636 static void
27431
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27429
diff changeset
637 txt_resolved_cb(GList *responses, gpointer data)
25596
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25593
diff changeset
638 {
25776
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25775
diff changeset
639 JabberStream *js = data;
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
640
25775
1516525c86fa Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents: 25774
diff changeset
641 js->srv_query_data = NULL;
1516525c86fa Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents: 25774
diff changeset
642
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
643 if (responses == NULL) {
29184
20f4bce8894d jabber: Print a better error message when all connection methods fail.
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
644 purple_debug_warning("jabber", "Unable to find alternative XMPP connection "
20f4bce8894d jabber: Print a better error message when all connection methods fail.
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
645 "methods after failing to connect directly.");
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
646 purple_connection_error_reason(js->gc,
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
647 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
29184
20f4bce8894d jabber: Print a better error message when all connection methods fail.
Paul Aurich <paul@darkrain42.org>
parents: 29142
diff changeset
648 _("Unable to connect"));
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
649 return;
25596
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25593
diff changeset
650 }
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
651
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
652 while (responses) {
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
653 PurpleTxtResponse *resp = responses->data;
25597
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
654 gchar **token;
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
655 token = g_strsplit(purple_txt_response_get_content(resp), "=", 2);
25597
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
656 if (!strcmp(token[0], "_xmpp-client-xbosh")) {
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
657 purple_debug_info("jabber","Found alternative connection method using %s at %s.\n", token[0], token[1]);
25776
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25775
diff changeset
658 js->bosh = jabber_bosh_connection_init(js, token[1]);
25597
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
659 g_strfreev(token);
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
660 break;
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
661 }
9f8951284a2e * small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25596
diff changeset
662 g_strfreev(token);
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
663 purple_txt_response_destroy(resp);
27431
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27429
diff changeset
664 responses = g_list_delete_link(responses, responses);
25596
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25593
diff changeset
665 }
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
666
25776
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25775
diff changeset
667 if (js->bosh) {
7de1f124f95a Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents: 25775
diff changeset
668 jabber_bosh_connection_connect(js->bosh);
25600
1cbe5a9f6efb * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25597
diff changeset
669 } else {
1cbe5a9f6efb * adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25597
diff changeset
670 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: 25597
diff changeset
671 }
26671
400f74b95c0e First crack at Win32 TXT DNS query code and don't leak the PurpleTxtResponses
Paul Aurich <paul@darkrain42.org>
parents: 26670
diff changeset
672
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
673 if (responses) {
27431
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27429
diff changeset
674 g_list_foreach(responses, (GFunc)purple_txt_response_destroy, NULL);
a71cc338f0fd A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27429
diff changeset
675 g_list_free(responses);
26672
acee7d2b1983 Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents: 26671
diff changeset
676 }
25596
7768cad83127 * looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25593
diff changeset
677 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
678
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
679 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
680 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
681 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
682 PurpleConnection *gc = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
683 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
684
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
685 if (source < 0) {
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
686 if (js->srv_rec != NULL) {
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
687 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record.\n", error);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
688 try_srv_connect(js);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
689 } else {
25716
ba362a67278c propagate from branch 'im.pidgin.pidgin' (head 2747d5e0324ca6b81e83bbb8b75e1efebcbbad6e)
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23644 25597
diff changeset
690 purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain);
27684
6f455daf3776 ASCII-ize the TXT query, too.
Paul Aurich <paul@darkrain42.org>
parents: 27683
diff changeset
691 js->srv_query_data = purple_txt_resolve("_xmppconnect",
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
692 js->user->domain, txt_resolved_cb, js);
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
693 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
694 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
695 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
696
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
697 g_free(js->srv_rec);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
698 js->srv_rec = NULL;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
699
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
700 js->fd = source;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
701
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
702 if(js->state == JABBER_STREAM_CONNECTING)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
703 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
704
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
705 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
706 gc->inpa = purple_input_add(js->fd, PURPLE_INPUT_READ, jabber_recv_cb, gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
707 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
708
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
709 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
710 jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
711 gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
712 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
713 PurpleConnection *gc = data;
15607
66dc2367b137 If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents: 15498
diff changeset
714 JabberStream *js;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
715
15607
66dc2367b137 If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents: 15498
diff changeset
716 /* If the connection is already disconnected, we don't need to do anything else */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
717 if(!PURPLE_CONNECTION_IS_VALID(gc))
15607
66dc2367b137 If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents: 15498
diff changeset
718 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: 15498
diff changeset
719
66dc2367b137 If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents: 15498
diff changeset
720 js = gc->proto_data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
721 js->gsc = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
722
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
723 purple_connection_ssl_error (gc, error);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
724 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
725
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
726 static void tls_init(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
727 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
728 purple_input_remove(js->gc->inpa);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
729 js->gc->inpa = 0;
18929
67cb28c0ec89 applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18163
diff changeset
730 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
731 jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc);
27984
96c38fe2cb00 Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <paul@darkrain42.org>
parents: 27711
diff changeset
732 /* The fd is no longer our concern */
96c38fe2cb00 Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <paul@darkrain42.org>
parents: 27711
diff changeset
733 js->fd = -1;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
734 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
735
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
736 static gboolean jabber_login_connect(JabberStream *js, const char *domain, const char *host, int port,
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
737 gboolean fatal_failure)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
738 {
22327
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
739 /* 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
740 * 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
741 * but we use domain as fallback for when users enter IP address
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
742 * in connect server */
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
743 g_free(js->serverFQDN);
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
744 if (purple_ip_address_is_valid(host))
22327
dc47e908965f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents: 22149
diff changeset
745 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
746 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
747 js->serverFQDN = g_strdup(host);
15766
51dd9ae01585 pass the correct domain to cyrus sasl (sf patch 1663064)
Nathan Walp <nwalp@pidgin.im>
parents: 15729
diff changeset
748
27689
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27684
diff changeset
749 if (purple_proxy_connect(js->gc, purple_connection_get_account(js->gc),
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27684
diff changeset
750 host, port, jabber_login_callback, js->gc) == NULL) {
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
751 if (fatal_failure) {
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
752 purple_connection_error_reason(js->gc,
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
753 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
27463
f541583e31bd More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents: 27431
diff changeset
754 _("Unable to connect"));
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
755 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
756
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
757 return FALSE;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
758 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
759
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
760 return TRUE;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
761 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
762
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
763 static void try_srv_connect(JabberStream *js)
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
764 {
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
765 while (js->srv_rec != NULL && js->srv_rec_idx < js->max_srv_rec_idx) {
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
766 PurpleSrvResponse *tmp_resp = js->srv_rec + (js->srv_rec_idx++);
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
767 if (jabber_login_connect(js, tmp_resp->hostname, tmp_resp->hostname, tmp_resp->port, FALSE))
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
768 return;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
769 }
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
770
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
771 g_free(js->srv_rec);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
772 js->srv_rec = NULL;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
773
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
774 /* Fall back to the defaults (I'm not sure if we should actually do this) */
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
775 jabber_login_connect(js, js->user->domain, js->user->domain,
27689
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27684
diff changeset
776 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222),
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
777 TRUE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
778 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
779
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
780 static void srv_resolved_cb(PurpleSrvResponse *resp, int results, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
781 {
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
782 JabberStream *js = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
783 js->srv_query_data = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
784
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
785 if(results) {
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
786 js->srv_rec = resp;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
787 js->srv_rec_idx = 0;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
788 js->max_srv_rec_idx = results;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
789 try_srv_connect(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
790 } else {
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
791 jabber_login_connect(js, js->user->domain, js->user->domain,
27689
5f17bfa9dc70 To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents: 27684
diff changeset
792 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222),
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
793 TRUE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
794 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
795 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
796
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
797 static JabberStream *
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
798 jabber_stream_new(PurpleAccount *account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
799 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
800 PurpleConnection *gc = purple_account_get_connection(account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
801 JabberStream *js;
25963
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
802 PurplePresence *presence;
27683
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
803 gchar *user;
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
804 gchar *slash;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
805
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
806 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
807 js->gc = gc;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
808 js->fd = -1;
27683
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
809
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
810 user = g_strdup(purple_account_get_username(account));
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
811 /* jabber_id_new doesn't accept "user@domain/" as valid */
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
812 slash = strchr(user, '/');
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
813 if (slash && *(slash + 1) == '\0')
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
814 *slash = '\0';
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
815 js->user = jabber_id_new(user);
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
816
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
817 if (!js->user) {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
818 purple_connection_error_reason(gc,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
819 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
820 _("Invalid XMPP ID"));
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
821 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
822 return NULL;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
823 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
824
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
825 if (!js->user->domain || *(js->user->domain) == '\0') {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
826 purple_connection_error_reason(gc,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
827 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
828 _("Invalid XMPP ID. Domain must be set."));
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
829 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
830 return NULL;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
831 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
832
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
833 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
834 g_free, (GDestroyNotify)jabber_buddy_free);
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
835
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28131
diff changeset
836 js->user_jb = jabber_buddy_find(js, user, TRUE);
27683
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
837 g_free(user);
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28131
diff changeset
838 if (!js->user_jb) {
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
839 /* This basically *can't* fail, but for good measure... */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
840 purple_connection_error_reason(gc,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
841 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
842 _("Invalid XMPP ID"));
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
843 /* Destroying the connection will free the JabberStream */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
844 g_return_val_if_reached(NULL);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
845 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
846
28132
eb2d17945ce3 jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents: 28131
diff changeset
847 js->user_jb->subscription |= JABBER_SUB_BOTH;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
848
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
849 js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
850 g_free, g_free);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
851 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
852 g_free, (GDestroyNotify)jabber_chat_free);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
853 js->next_id = g_random_int();
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
854 js->write_buffer = purple_circ_buffer_new(512);
21978
cacc01b50a23 Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <stu@nosnilmot.com>
parents: 21973
diff changeset
855 js->old_length = 0;
27151
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
856 js->keepalive_timeout = 0;
25995
6d7d360687bd Jabber: Default protocol version to 1.0.
Paul Aurich <paul@darkrain42.org>
parents: 25989
diff changeset
857 /* Set the default protocol version to 1.0. Overridden in parser.c. */
6d7d360687bd Jabber: Default protocol version to 1.0.
Paul Aurich <paul@darkrain42.org>
parents: 25989
diff changeset
858 js->protocol_version = JABBER_PROTO_1_0;
25648
16543025aed1 Moved jingle.c global variable "sessions" into JabberStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25647
diff changeset
859 js->sessions = NULL;
26162
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
860 js->stun_ip = NULL;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
861 js->stun_port = 0;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
862 js->stun_query = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
863
25962
a92df60855f3 Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents: 25956
diff changeset
864 /* if we are idle, set idle-ness on the stream (this could happen if we get
a92df60855f3 Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents: 25956
diff changeset
865 disconnected and the reconnects while being idle. I don't think it makes
a92df60855f3 Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents: 25956
diff changeset
866 sense to do this when registering a new account... */
25963
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
867 presence = purple_account_get_presence(account);
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
868 if (purple_presence_is_idle(presence))
feea711ac242 Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents: 25962
diff changeset
869 js->idle = purple_presence_get_idle_time(presence);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
870
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
871 return js;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
872 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
873
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
874 static void
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
875 jabber_stream_connect(JabberStream *js)
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
876 {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
877 PurpleConnection *gc = js->gc;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
878 PurpleAccount *account = purple_connection_get_account(gc);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
879 const char *connect_server = purple_account_get_string(account,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
880 "connect_server", "");
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
881 const char *bosh_url = purple_account_get_string(account,
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
882 "bosh_url", "");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
883
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
884 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
885
27255
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
886 /* If both BOSH and a Connect Server are specified, we prefer BOSH. I'm not
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
887 * attached to that choice, though.
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
888 */
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
889 if (*bosh_url) {
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
890 js->bosh = jabber_bosh_connection_init(js, bosh_url);
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
891 if (js->bosh)
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
892 jabber_bosh_connection_connect(js->bosh);
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
893 else {
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
894 purple_connection_error_reason(gc,
25834
7d2e85f78aec Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents: 25833
diff changeset
895 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
27255
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
896 _("Malformed BOSH URL"));
25834
7d2e85f78aec Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents: 25833
diff changeset
897 }
27255
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
898
25774
514051f3b6cf Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents: 25772
diff changeset
899 return;
514051f3b6cf Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents: 25772
diff changeset
900 }
514051f3b6cf Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents: 25772
diff changeset
901
27255
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
902 js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain);
a9fdf9327652 Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents: 27219
diff changeset
903
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
904 /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
905 if(purple_account_get_bool(account, "old_ssl", FALSE)) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
906 if(purple_ssl_is_supported()) {
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
907 js->gsc = purple_ssl_connect(account, js->certificate_CN,
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
908 purple_account_get_int(account, "port", 5223),
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
909 jabber_login_callback_ssl, jabber_ssl_connect_failure, gc);
25835
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
910 if (!js->gsc) {
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
911 purple_connection_error_reason(gc,
25835
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
912 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
913 _("Unable to establish SSL connection"));
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
914 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
915 } else {
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
916 purple_connection_error_reason(gc,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
917 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
20117
f24a2cacacd1 Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents: 20076
diff changeset
918 _("SSL support unavailable"));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
919 }
25835
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
920
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
921 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
922 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
923
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
924 /* 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
925 * invoke the magic of SRV lookups, to figure out host and port */
25987
c4fd9222dda1 propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
parents: 25443 25835
diff changeset
926 if(connect_server[0]) {
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
927 jabber_login_connect(js, js->user->domain, connect_server,
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
928 purple_account_get_int(account, "port", 5222), TRUE);
25835
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
929 } else {
97a4d71e0c3d Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents: 25834
diff changeset
930 js->srv_query_data = purple_srv_resolve("xmpp-client",
27711
7fbf964c6c6c Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents: 27689
diff changeset
931 "tcp", js->user->domain, srv_resolved_cb, js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
932 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
933 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
934
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
935 void
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
936 jabber_login(PurpleAccount *account)
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
937 {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
938 PurpleConnection *gc = purple_account_get_connection(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
939 JabberStream *js;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
940 PurpleStoredImage *image;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
941
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
942 gc->flags |= PURPLE_CONNECTION_HTML |
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
943 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
944 js = jabber_stream_new(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
945 if (js == NULL)
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
946 return;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
947
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
948 /*
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
949 * Calculate the avatar hash for our current image so we know (when we
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
950 * fetch our vCard and PEP avatar) if we should send our avatar to the
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
951 * server.
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
952 */
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
953 image = purple_buddy_icons_find_account_icon(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
954 if (image != NULL) {
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
955 js->initial_avatar_hash =
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
956 jabber_calculate_data_sha1sum(purple_imgstore_get_data(image),
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
957 purple_imgstore_get_size(image));
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
958 purple_imgstore_unref(image);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
959 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
960
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
961 jabber_stream_connect(js);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
962 }
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
963
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
964
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
965 static gboolean
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
966 conn_close_cb(gpointer data)
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 JabberStream *js = data;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
969 PurpleAccount *account = purple_connection_get_account(js->gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
970
17603
7a3a66c6530a Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17599
diff changeset
971 jabber_parser_free(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
972
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
973 purple_account_disconnect(account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
974
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
975 return FALSE;
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 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
979 jabber_connection_schedule_close(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
980 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
981 purple_timeout_add(0, conn_close_cb, js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
982 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
983
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
984 static void
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
985 jabber_registration_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
986 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
987 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
988 {
17607
ca0b86f3dbd2 Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17606
diff changeset
989 PurpleAccount *account = purple_connection_get_account(js->gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
990 char *buf;
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
991 char *to = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
992
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
993 if (type == JABBER_IQ_RESULT) {
17607
ca0b86f3dbd2 Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17606
diff changeset
994 if(js->registration) {
27366
73c8e1964eef A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27255
diff changeset
995 buf = g_strdup_printf(_("Registration of %s@%s successful"),
27413
46cc3674b13c Indentation fix.
Etan Reisner <pidgin@unreliablesource.net>
parents: 27151
diff changeset
996 js->user->node, js->user->domain);
17608
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17607
diff changeset
997 if(account->registration_cb)
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17607
diff changeset
998 (account->registration_cb)(account, TRUE, account->registration_cb_user_data);
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
999 } else {
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1000 g_return_if_fail(to != NULL);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1001 buf = g_strdup_printf(_("Registration to %s successful"),
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1002 to);
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1003 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1004 purple_notify_info(NULL, _("Registration Successful"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1005 _("Registration Successful"), buf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1006 g_free(buf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1007 } 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
1008 char *msg = jabber_parse_error(js, packet, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1009
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1010 if(!msg)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1011 msg = g_strdup(_("Unknown Error"));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1012
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1013 purple_notify_error(NULL, _("Registration Failed"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1014 _("Registration Failed"), msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1015 g_free(msg);
17608
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17607
diff changeset
1016 if(account->registration_cb)
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17607
diff changeset
1017 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1018 }
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1019 g_free(to);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1020 if(js->registration)
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1021 jabber_connection_schedule_close(js);
15374
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
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1024 static void
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1025 jabber_unregistration_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1026 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1027 xmlnode *packet, gpointer data)
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1028 {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1029 char *buf;
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1030 char *to = data;
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1031
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1032 /* This function is never called for unregistering our XMPP account from
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1033 * the server, so there should always be a 'to' address. */
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1034 g_return_if_fail(to != NULL);
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1035
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1036 if (type == JABBER_IQ_RESULT) {
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1037 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
1038 to);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1039 purple_notify_info(NULL, _("Unregistration Successful"),
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1040 _("Unregistration Successful"), buf);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1041 g_free(buf);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1042 } 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
1043 char *msg = jabber_parse_error(js, packet, NULL);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1044
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1045 if(!msg)
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1046 msg = g_strdup(_("Unknown Error"));
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1047
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1048 purple_notify_error(NULL, _("Unregistration Failed"),
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1049 _("Unregistration Failed"), msg);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1050 g_free(msg);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1051 }
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1052 g_free(to);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1053 }
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1054
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1055 typedef struct _JabberRegisterCBData {
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1056 JabberStream *js;
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1057 char *who;
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1058 } JabberRegisterCBData;
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1059
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1060 static void
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1061 jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1062 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1063 GList *groups, *flds;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1064 xmlnode *query, *y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1065 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1066 char *username;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1067
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1068 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1069 query = xmlnode_get_child(iq->node, "query");
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1070 if (cbdata->who)
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1071 xmlnode_set_attrib(iq->node, "to", cbdata->who);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1072
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1073 for(groups = purple_request_fields_get_groups(fields); groups;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1074 groups = groups->next) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1075 for(flds = purple_request_field_group_get_fields(groups->data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1076 flds; flds = flds->next) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1077 PurpleRequestField *field = flds->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1078 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
1079 if(!strcmp(id,"unregister")) {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1080 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
1081 if(value) {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1082 /* 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
1083 (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
1084 jabber_iq_free(iq);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1085 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
1086 query = xmlnode_get_child(iq->node, "query");
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1087 if (cbdata->who)
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1088 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
1089 xmlnode_new_child(query, "remove");
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1090
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1091 jabber_iq_set_callback(iq, jabber_unregistration_result_cb, cbdata->who);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1092
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1093 jabber_iq_send(iq);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1094 g_free(cbdata);
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1095 return;
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1096 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1097 } else {
28729
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1098 const char *ids[] = {"username", "password", "name", "email", "nick", "first",
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1099 "last", "address", "city", "state", "zip", "phone", "url", "date",
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1100 NULL};
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1101 const char *value = purple_request_field_string_get_value(field);
28729
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1102 int i;
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1103 for (i = 0; ids[i]; i++) {
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1104 if (!strcmp(id, ids[i]))
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1105 break;
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1106 }
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1107
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1108 if (!ids[i])
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1109 continue;
28729
ed88200c79ee A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 28694
diff changeset
1110 y = xmlnode_new_child(query, ids[i]);
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1111 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
1112 if(cbdata->js->registration && !strcmp(id, "username")) {
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1113 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
1114 cbdata->js->user->node = g_strdup(value);
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1115 }
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1116 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
1117 purple_account_set_password(cbdata->js->gc->account, value);
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1118 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1119 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1120 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1121
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1122 if(cbdata->js->registration) {
28681
53bf7fd37cb0 Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28658
diff changeset
1123 username = g_strdup_printf("%s@%s%s%s", cbdata->js->user->node, cbdata->js->user->domain,
29113
3bf5dbff753b jabber: Complete the fix for a NULL printf() on registration on Windows. Closes #10420 again.
Paul Aurich <paul@darkrain42.org>
parents: 29031
diff changeset
1124 cbdata->js->user->resource ? "/" : "",
3bf5dbff753b jabber: Complete the fix for a NULL printf() on registration on Windows. Closes #10420 again.
Paul Aurich <paul@darkrain42.org>
parents: 29031
diff changeset
1125 cbdata->js->user->resource ? cbdata->js->user->resource : "");
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1126 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
1127 g_free(username);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1128 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1129
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1130 jabber_iq_set_callback(iq, jabber_registration_result_cb, cbdata->who);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1131
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1132 jabber_iq_send(iq);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1133 g_free(cbdata);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1134 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1135
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1136 static void
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1137 jabber_register_cancel_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1138 {
17607
ca0b86f3dbd2 Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17606
diff changeset
1139 PurpleAccount *account = purple_connection_get_account(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
1140 if(account && cbdata->js->registration) {
17607
ca0b86f3dbd2 Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17606
diff changeset
1141 if(account->registration_cb)
17608
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17607
diff changeset
1142 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1143 jabber_connection_schedule_close(cbdata->js);
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1144 }
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1145 g_free(cbdata->who);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1146 g_free(cbdata);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1147 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1148
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1149 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
1150 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1151 xmlnode *query;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1152 JabberIq *iq;
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1153 char *to = data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1154
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1155 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
1156 query = xmlnode_get_child(iq->node, "query");
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1157 if (to)
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1158 xmlnode_set_attrib(iq->node,"to",to);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1159
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1160 xmlnode_insert_child(query, result);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1161
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1162 jabber_iq_set_callback(iq, jabber_registration_result_cb, to);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1163 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1164 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1165
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1166 static const struct {
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1167 const char *name;
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1168 const char *label;
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1169 } registration_fields[] = {
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1170 { "email", N_("Email") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1171 { "nick", N_("Nickname") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1172 { "first", N_("First name") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1173 { "last", N_("Last name") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1174 { "address", N_("Address") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1175 { "city", N_("City") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1176 { "state", N_("State") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1177 { "zip", N_("Postal code") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1178 { "phone", N_("Phone") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1179 { "url", N_("URL") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1180 { "date", N_("Date") },
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1181 { NULL, NULL }
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1182 };
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1183
25933
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 25930
diff changeset
1184 void jabber_register_parse(JabberStream *js, const char *from, JabberIqType type,
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 25930
diff changeset
1185 const char *id, xmlnode *query)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1186 {
17607
ca0b86f3dbd2 Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17606
diff changeset
1187 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
1188 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
1189 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
1190 PurpleRequestField *field;
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1191 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
1192 char *instructions;
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1193 JabberRegisterCBData *cbdata;
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1194 gboolean registered = FALSE;
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1195 int i;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1196
25933
050052891c55 Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents: 25930
diff changeset
1197 if (type != JABBER_IQ_RESULT)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1198 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1199
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
1200 if(js->registration) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1201 /* get rid of the login thingy */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1202 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
1203 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1204
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
1205 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
1206 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
1207
17607
ca0b86f3dbd2 Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17606
diff changeset
1208 if(js->registration) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1209 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
1210 _("Already Registered"), NULL);
17607
ca0b86f3dbd2 Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17606
diff changeset
1211 if(account->registration_cb)
17608
a8b1159fd95b Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17607
diff changeset
1212 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1213 jabber_connection_schedule_close(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1214 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1215 }
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1216 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1217
25066
256fbe98f6be The jabber_register_parse function was looking for the <x> node as a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25050
diff changeset
1218 if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) {
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1219 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
1220 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
1221
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1222 } 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
1223 xmlnode *url;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1224
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
1225 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
1226 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
1227 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
1228 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
1229 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
1230
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
1231 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
1232 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
1233 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
1234 (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
1235 jabber_connection_schedule_close(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1236 }
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
1237 return;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1238 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1239 }
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 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1241
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
1242 /* as a last resort, use the old jabber:iq:register syntax */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1243
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
1244 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
1245 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
1246 purple_request_fields_add_group(fields, group);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1247
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1248 if((node = xmlnode_get_child(query, "username"))) {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1249 char *data = xmlnode_get_data(node);
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1250 if(js->registration)
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1251 field = purple_request_field_string_new("username", _("Username"), data ? data : js->user->node, FALSE);
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1252 else
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1253 field = purple_request_field_string_new("username", _("Username"), data, FALSE);
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1254
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1255 purple_request_field_group_add_field(group, field);
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1256 g_free(data);
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1257 }
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1258 if((node = xmlnode_get_child(query, "password"))) {
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1259 if(js->registration)
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1260 field = purple_request_field_string_new("password", _("Password"),
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1261 purple_connection_get_password(js->gc), FALSE);
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1262 else {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1263 char *data = xmlnode_get_data(node);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1264 field = purple_request_field_string_new("password", _("Password"), data, FALSE);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1265 g_free(data);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1266 }
26329
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1267
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1268 purple_request_field_string_set_masked(field, TRUE);
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1269 purple_request_field_group_add_field(group, field);
f5e613e05332 Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents: 25985
diff changeset
1270 }
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1271
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1272 if((node = xmlnode_get_child(query, "name"))) {
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1273 if(js->registration)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1274 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
1275 purple_account_get_alias(js->gc->account), FALSE);
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1276 else {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1277 char *data = xmlnode_get_data(node);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1278 field = purple_request_field_string_new("name", _("Name"), data, FALSE);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1279 g_free(data);
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1280 }
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
1281 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
1282 }
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1283
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1284 for (i = 0; registration_fields[i].name != NULL; ++i) {
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1285 if ((node = xmlnode_get_child(query, registration_fields[i].name))) {
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1286 char *data = xmlnode_get_data(node);
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1287 field = purple_request_field_string_new(registration_fields[i].name,
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1288 _(registration_fields[i].label),
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1289 data, FALSE);
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1290 purple_request_field_group_add_field(group, field);
26697
5149ecc8f456 Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents: 26694
diff changeset
1291 g_free(data);
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1292 }
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
1293 }
26694
28381a8889a8 This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents: 26692
diff changeset
1294
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1295 if(registered) {
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1296 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
1297 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
1298 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1299
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1300 if((y = xmlnode_get_child(query, "instructions")))
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1301 instructions = xmlnode_get_data(y);
18695
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1302 else if(registered)
91eece1ad9bc Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18684
diff changeset
1303 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
1304 "to change your account registration."));
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1305 else
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1306 instructions = g_strdup(_("Please fill out the information below "
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1307 "to register your new account."));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1308
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1309 cbdata = g_new0(JabberRegisterCBData, 1);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1310 cbdata->js = js;
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1311 cbdata->who = g_strdup(from);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1312
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1313 if(js->registration)
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1314 purple_request_fields(js->gc, _("Register New XMPP Account"),
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16822
diff changeset
1315 _("Register New XMPP Account"), instructions, fields,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1316 _("Register"), G_CALLBACK(jabber_register_cb),
16442
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16240
diff changeset
1317 _("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
1318 purple_connection_get_account(js->gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1319 cbdata);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1320 else {
25101
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1321 char *title;
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1322 g_return_if_fail(from != NULL);
b90c26f391b0 Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents: 25097
diff changeset
1323 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
1324 :g_strdup_printf(_("Register New Account at %s"), from);
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1325 purple_request_fields(js->gc, title,
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1326 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
1327 (registered ? _("Change Registration") : _("Register")), G_CALLBACK(jabber_register_cb),
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1328 _("Cancel"), G_CALLBACK(jabber_register_cancel_cb),
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1329 purple_connection_get_account(js->gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
1330 cbdata);
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1331 g_free(title);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1332 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1333
20276
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1334 g_free(instructions);
c1d3d25e8c49 Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents: 20187
diff changeset
1335 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1336
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1337 void jabber_register_start(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1338 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1339 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1340
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1341 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
1342 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1343 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1344
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1345 void jabber_register_gateway(JabberStream *js, const char *gateway) {
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1346 JabberIq *iq;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1347
17599
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1348 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1349 xmlnode_set_attrib(iq->node, "to", gateway);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1350 jabber_iq_send(iq);
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1351 }
8c3fbc353a9c Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17596
diff changeset
1352
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
1353 void jabber_register_account(PurpleAccount *account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1354 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1355 JabberStream *js;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1356
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1357 js = jabber_stream_new(account);
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1358 if (js == NULL)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1359 return;
27675
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1360
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1361 js->registration = TRUE;
409ef6d76bf6 Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents: 27603
diff changeset
1362 jabber_stream_connect(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1363 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1364
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1365 static void
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1366 jabber_unregister_account_iq_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1367 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1368 xmlnode *packet, gpointer data)
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1369 {
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
1370 PurpleAccount *account = purple_connection_get_account(js->gc);
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1371
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1372 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
1373 char *msg = jabber_parse_error(js, packet, NULL);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1374
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
1375 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
1376 _("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
1377 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
1378 if(js->unregistration_cb)
18921
ba3b22cd280b Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18920
diff changeset
1379 js->unregistration_cb(account, FALSE, js->unregistration_user_data);
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1380 } 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
1381 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
1382 _("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
1383 if(js->unregistration_cb)
18921
ba3b22cd280b Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents: 18920
diff changeset
1384 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
1385 }
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
1386 }
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
1387
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
1388 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
1389 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
1390 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
1391
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1392 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
1393
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1394 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
1395
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1396 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
1397
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1398 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
1399 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
1400
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1401 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
1402 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
1403 }
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
1404
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
1405 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
1406 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
1407 JabberStream *js;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1408
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
1409 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
1410 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
1411 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
1412 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
1413 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
1414 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
1415 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
1416 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
1417 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1418
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
1419 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
1420
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1421 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
1422 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
1423 return;
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1424 }
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1425
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
1426 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
1427 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
1428 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
1429
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
1430 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
1431 }
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
1432
25872
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1433 /* TODO: As Will pointed out in IRC, after being notified by the core to
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1434 * shutdown, we should async. wait for the server to send us the stream
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1435 * termination before destorying everything. That seems like it would require
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1436 * changing the semantics of prpl->close(), so it's a good idea for 3.0.0.
3b674151cd60 *** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents: 25871
diff changeset
1437 */
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
1438 void jabber_close(PurpleConnection *gc)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1439 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1440 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1441
25667
41d6d4217d21 Further decoupled Jingle code from jabber.c:
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25666
diff changeset
1442 /* Close all of the open Jingle sessions on this stream */
26014
bd598b606ca4 Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25729
diff changeset
1443 jingle_terminate_sessions(js);
25647
e1c8ec1259de Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25646
diff changeset
1444
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1445 /* Don't perform any actions on the ssl connection
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1446 * if we were forcibly disconnected because it will crash
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1447 * on some SSL backends.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1448 */
25777
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
1449 if (!gc->disconnect_timeout) {
28125
53f0956f76dc jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents: 28115
diff changeset
1450 if (js->bosh)
25777
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
1451 jabber_bosh_connection_close(js->bosh);
27683
f95bcb5eb047 Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents: 27675
diff changeset
1452 else if ((js->gsc && js->gsc->fd > 0) || js->fd > 0)
25777
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
1453 jabber_send_raw(js, "</stream:stream>", -1);
26767
90d5e3b94a37 Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents: 26766
diff changeset
1454 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1455
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1456 if (js->srv_query_data)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1457 purple_srv_cancel(js->srv_query_data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1458
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1459 if(js->gsc) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1460 #ifdef HAVE_OPENSSL
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1461 if (!gc->disconnect_timeout)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1462 #endif
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1463 purple_ssl_close(js->gsc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1464 } else if (js->fd > 0) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1465 if(js->gc->inpa)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1466 purple_input_remove(js->gc->inpa);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1467 close(js->fd);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1468 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1469
25777
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
1470 if (js->bosh)
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
1471 jabber_bosh_connection_destroy(js->bosh);
17b60b844803 Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents: 25776
diff changeset
1472
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1473 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
1474
17603
7a3a66c6530a Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17599
diff changeset
1475 jabber_parser_free(js);
7a3a66c6530a Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17599
diff changeset
1476
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1477 if(js->iq_callbacks)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1478 g_hash_table_destroy(js->iq_callbacks);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1479 if(js->buddies)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1480 g_hash_table_destroy(js->buddies);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1481 if(js->chats)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1482 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
1483
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1484 while(js->chat_servers) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1485 g_free(js->chat_servers->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1486 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
1487 }
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
1488
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1489 while(js->user_directories) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1490 g_free(js->user_directories->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1491 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
1492 }
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
1493
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
1494 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
1495 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
1496 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
1497 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
1498 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
1499 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
1500 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
1501 }
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
1502
23744
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1503 while(js->url_datas) {
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1504 purple_util_fetch_url_cancel(js->url_datas->data);
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1505 js->url_datas = g_slist_delete_link(js->url_datas, js->url_datas);
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1506 }
3c3032be12de Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23644
diff changeset
1507
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
1508 g_free(js->stream_id);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1509 if(js->user)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1510 jabber_id_free(js->user);
25832
2d92bbe6807b Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents: 25829
diff changeset
1511 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
1512 g_free(js->avatar_hash);
25742
4040da08a733 Entity Capabilities must be per-JabberStream
Paul Aurich <paul@darkrain42.org>
parents: 25741
diff changeset
1513 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
1514
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1515 purple_circ_buffer_destroy(js->write_buffer);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1516 if(js->writeh)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1517 purple_input_remove(js->writeh);
29089
c1d41b7484ff jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents: 29078
diff changeset
1518 if (js->auth_mech && js->auth_mech->dispose)
c1d41b7484ff jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents: 29078
diff changeset
1519 js->auth_mech->dispose(js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1520 #ifdef HAVE_CYRUS_SASL
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1521 if(js->sasl)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1522 sasl_dispose(&js->sasl);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1523 if(js->sasl_mechs)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1524 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
1525 g_free(js->sasl_cb);
18929
67cb28c0ec89 applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18163
diff changeset
1526 #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
1527 g_free(js->serverFQDN);
17610
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
1528 while(js->commands) {
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
1529 JabberAdHocCommands *cmd = js->commands->data;
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
1530 g_free(cmd->jid);
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
1531 g_free(cmd->node);
17620
11dd7969dd4b Fixed copy/paste error.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17617
diff changeset
1532 g_free(cmd->name);
17610
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
1533 g_free(cmd);
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
1534 js->commands = g_list_delete_link(js->commands, js->commands);
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
1535 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1536 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
1537 g_free(js->certificate_CN);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1538 g_free(js->gmail_last_time);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1539 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
1540 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
1541 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
1542 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
1543 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
1544 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
1545 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
1546 g_free(js->old_track);
22933
9dc7e1d4da15 patch from Andrew Gaul to fix another memleak
Ka-Hing Cheung <khc@hxbc.us>
parents: 22602
diff changeset
1547 g_free(js->expected_rspauth);
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
1548
28112
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 27991
diff changeset
1549 if (js->vcard_timer != 0)
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 27991
diff changeset
1550 purple_timeout_remove(js->vcard_timer);
1ea1aee71848 jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents: 27991
diff changeset
1551
27151
08f5c5b12e7c The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents: 27137
diff changeset
1552 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
1553 purple_timeout_remove(js->keepalive_timeout);
23643
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
1554
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
1555 g_free(js->srv_rec);
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
1556 js->srv_rec = NULL;
224169be5830 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23398
diff changeset
1557
26162
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1558 g_free(js->stun_ip);
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1559 js->stun_ip = NULL;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1560
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1561 /* cancel DNS query for STUN, if one is ongoing */
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1562 if (js->stun_query) {
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1563 purple_dnsquery_destroy(js->stun_query);
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1564 js->stun_query = NULL;
88f183f7dfc7 Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents: 26145
diff changeset
1565 }
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
1566
23644
fa8567fa0ca0 Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23643
diff changeset
1567 g_free(js);
fa8567fa0ca0 Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23643
diff changeset
1568
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1569 gc->proto_data = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1570 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1571
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1572 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
1573 {
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
1574 #define JABBER_CONNECT_STEPS ((js->gsc || js->state == JABBER_STREAM_INITIALIZING_ENCRYPTION) ? 9 : 5)
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
1575
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1576 js->state = state;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1577 switch(state) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1578 case JABBER_STREAM_OFFLINE:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1579 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1580 case JABBER_STREAM_CONNECTING:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1581 purple_connection_update_progress(js->gc, _("Connecting"), 1,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1582 JABBER_CONNECT_STEPS);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1583 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1584 case JABBER_STREAM_INITIALIZING:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1585 purple_connection_update_progress(js->gc, _("Initializing Stream"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1586 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1587 jabber_stream_init(js);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1588 break;
17606
108f3b42976f Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17603
diff changeset
1589 case JABBER_STREAM_INITIALIZING_ENCRYPTION:
108f3b42976f Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17603
diff changeset
1590 purple_connection_update_progress(js->gc, _("Initializing SSL/TLS"),
108f3b42976f Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17603
diff changeset
1591 6, JABBER_CONNECT_STEPS);
108f3b42976f Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17603
diff changeset
1592 break;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1593 case JABBER_STREAM_AUTHENTICATING:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1594 purple_connection_update_progress(js->gc, _("Authenticating"),
17606
108f3b42976f Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17603
diff changeset
1595 js->gsc ? 7 : 3, JABBER_CONNECT_STEPS);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1596 break;
28447
b357216b7b79 jabber: Fix using BOSH and legacy auth together. Closes #9990.
Paul Aurich <paul@darkrain42.org>
parents: 28398
diff changeset
1597 case JABBER_STREAM_POST_AUTH:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1598 purple_connection_update_progress(js->gc, _("Re-initializing Stream"),
17606
108f3b42976f Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17603
diff changeset
1599 (js->gsc ? 8 : 4), JABBER_CONNECT_STEPS);
16822
a77901ef0ebb this should fix jabber buddy icons (but it will re-introduce the behavior of overwriting your vCard whenever you sign in).
Nathan Walp <nwalp@pidgin.im>
parents: 16728
diff changeset
1600
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1601 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1602 case JABBER_STREAM_CONNECTED:
27571
c8390dc125c1 Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents: 27096
diff changeset
1603 /* Send initial presence */
c8390dc125c1 Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents: 27096
diff changeset
1604 jabber_presence_send(js, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1605 purple_connection_set_state(js->gc, PURPLE_CONNECTED);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1606 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1607 }
28694
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
1608
c7aaad89a2f8 jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents: 28681
diff changeset
1609 #undef JABBER_CONNECT_STEPS
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1610 }
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 char *jabber_get_next_id(JabberStream *js)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1613 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1614 return g_strdup_printf("purple%x", js->next_id++);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1615 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1616
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1617
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
1618 void jabber_idle_set(PurpleConnection *gc, int idle)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1619 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1620 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1621
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1622 js->idle = idle ? time(NULL) - idle : idle;
26787
fef989505ea2 propagate from branch 'im.pidgin.pidgin' (head 7281ad5ba8e68debd285e06dafebd991e980f3da)
Paul Aurich <paul@darkrain42.org>
parents: 26780 26781
diff changeset
1623
25791
e9b7e41dc816 A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <ml@update.uu.se>
parents: 24155
diff changeset
1624 /* send out an updated prescence */
e9b7e41dc816 A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <ml@update.uu.se>
parents: 24155
diff changeset
1625 purple_debug_info("jabber", "sending updated presence for idle\n");
26818
a0e48796defb Fix merging.
Paul Aurich <paul@darkrain42.org>
parents: 26817
diff changeset
1626 jabber_presence_send(js, FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1627 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1628
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1629 void jabber_blocklist_parse_push(JabberStream *js, const char *from,
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1630 JabberIqType type, const char *id,
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1631 xmlnode *child)
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1632 {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1633 JabberIq *result;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1634 xmlnode *item;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1635 PurpleAccount *account;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1636 gboolean is_block;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1637
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1638 if (!jabber_is_own_account(js, from)) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1639 xmlnode *error, *x;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1640 result = jabber_iq_new(js, JABBER_IQ_ERROR);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1641 xmlnode_set_attrib(result->node, "id", id);
27040
c41698323c2f No, I had that right the first time; if it's not our account, then there *is* a from and we need to route the IQ to the proper place.
Paul Aurich <paul@darkrain42.org>
parents: 27039
diff changeset
1642 if (from)
c41698323c2f No, I had that right the first time; if it's not our account, then there *is* a from and we need to route the IQ to the proper place.
Paul Aurich <paul@darkrain42.org>
parents: 27039
diff changeset
1643 xmlnode_set_attrib(result->node, "to", from);
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1644
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1645 error = xmlnode_new_child(result->node, "error");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1646 xmlnode_set_attrib(error, "type", "cancel");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1647 x = xmlnode_new_child(error, "not-allowed");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1648 xmlnode_set_namespace(x, NS_XMPP_STANZAS);
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1649
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1650 jabber_iq_send(result);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1651 return;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1652 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1653
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1654 account = purple_connection_get_account(js->gc);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1655 is_block = g_str_equal(child->name, "block");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1656
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1657 item = xmlnode_get_child(child, "item");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1658 if (!is_block && item == NULL) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1659 /* Unblock everyone */
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1660 purple_debug_info("jabber", "Received unblock push. Unblocking everyone.\n");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1661
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1662 while (account->deny != NULL) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1663 purple_privacy_deny_remove(account, account->deny->data, TRUE);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1664 }
27039
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1665 } else if (item == NULL) {
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1666 /* An empty <block/> is bogus */
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1667 xmlnode *error, *x;
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1668 result = jabber_iq_new(js, JABBER_IQ_ERROR);
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1669 xmlnode_set_attrib(result->node, "id", id);
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1670
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1671 error = xmlnode_new_child(result->node, "error");
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1672 xmlnode_set_attrib(error, "type", "modify");
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1673 x = xmlnode_new_child(error, "bad-request");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1674 xmlnode_set_namespace(x, NS_XMPP_STANZAS);
27039
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1675
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1676 jabber_iq_send(result);
373141b35c52 Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents: 27034
diff changeset
1677 return;
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1678 } else {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1679 for ( ; item; item = xmlnode_get_next_twin(item)) {
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1680 const char *jid = xmlnode_get_attrib(item, "jid");
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1681 if (jid == NULL || *jid == '\0')
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1682 continue;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1683
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1684 if (is_block)
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1685 purple_privacy_deny_add(account, jid, TRUE);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1686 else
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1687 purple_privacy_deny_remove(account, jid, TRUE);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1688 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1689 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1690
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1691 result = jabber_iq_new(js, JABBER_IQ_RESULT);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1692 xmlnode_set_attrib(result->node, "id", id);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1693 jabber_iq_send(result);
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1694 }
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1695
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1696 static void jabber_blocklist_parse(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1697 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
1698 xmlnode *packet, gpointer data)
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1699 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1700 xmlnode *blocklist, *item;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1701 PurpleAccount *account;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1702
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1703 blocklist = xmlnode_get_child_with_namespace(packet,
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1704 "blocklist", NS_SIMPLE_BLOCKING);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1705 account = purple_connection_get_account(js->gc);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1706
27034
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1707 if (type == JABBER_IQ_ERROR || blocklist == NULL)
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1708 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1709
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1710 /* This is the only privacy method supported by XEP-0191 */
27034
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1711 if (account->perm_deny != PURPLE_PRIVACY_DENY_USERS)
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1712 account->perm_deny = PURPLE_PRIVACY_DENY_USERS;
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1713
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1714 /*
27034
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1715 * TODO: When account->deny is something more than a hash table, this can
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1716 * be re-written to find the set intersection and difference.
27033
10c91922bc1e Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents: 27015
diff changeset
1717 */
27034
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1718 while (account->deny)
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1719 purple_privacy_deny_remove(account, account->deny->data, TRUE);
1dcee141997d The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents: 27033
diff changeset
1720
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1721 item = xmlnode_get_child(blocklist, "item");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1722 while (item != NULL) {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1723 const char *jid = xmlnode_get_attrib(item, "jid");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1724 purple_privacy_deny_add(account, jid, TRUE);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1725 item = xmlnode_get_next_twin(item);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1726 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1727 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1728
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1729 void jabber_request_block_list(JabberStream *js)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1730 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1731 JabberIq *iq;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1732 xmlnode *blocklist;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1733
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1734 iq = jabber_iq_new(js, JABBER_IQ_GET);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1735
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1736 blocklist = xmlnode_new_child(iq->node, "blocklist");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1737 xmlnode_set_namespace(blocklist, NS_SIMPLE_BLOCKING);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1738
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1739 jabber_iq_set_callback(iq, jabber_blocklist_parse, NULL);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1740
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1741 jabber_iq_send(iq);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1742 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1743
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1744 void jabber_add_deny(PurpleConnection *gc, const char *who)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1745 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1746 JabberStream *js;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1747 JabberIq *iq;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1748 xmlnode *block, *item;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1749
29140
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1750 g_return_if_fail(who != NULL && *who != '\0');
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1751
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1752 js = purple_connection_get_protocol_data(gc);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1753 if (js == NULL)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1754 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1755
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1756 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1757 {
29140
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1758 jabber_google_roster_add_deny(js, who);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1759 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1760 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1761
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1762 if (!(js->server_caps & JABBER_CAP_BLOCKING))
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1763 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1764 purple_notify_error(NULL, _("Server doesn't support blocking"),
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1765 _("Server doesn't support blocking"), NULL);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1766 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1767 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1768
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1769 iq = jabber_iq_new(js, JABBER_IQ_SET);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1770
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1771 block = xmlnode_new_child(iq->node, "block");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1772 xmlnode_set_namespace(block, NS_SIMPLE_BLOCKING);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1773
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1774 item = xmlnode_new_child(block, "item");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1775 xmlnode_set_attrib(item, "jid", who);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1776
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1777 jabber_iq_send(iq);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1778 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1779
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1780 void jabber_rem_deny(PurpleConnection *gc, const char *who)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1781 {
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1782 JabberStream *js;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1783 JabberIq *iq;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1784 xmlnode *unblock, *item;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1785
29140
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1786 g_return_if_fail(who != NULL && *who != '\0');
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1787
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1788 js = purple_connection_get_protocol_data(gc);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1789 if (js == NULL)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1790 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1791
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1792 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER)
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1793 {
29140
531f8367025e jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents: 29126
diff changeset
1794 jabber_google_roster_rem_deny(js, who);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1795 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1796 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1797
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1798 if (!(js->server_caps & JABBER_CAP_BLOCKING))
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1799 return;
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1800
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1801 iq = jabber_iq_new(js, JABBER_IQ_SET);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1802
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1803 unblock = xmlnode_new_child(iq->node, "unblock");
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
1804 xmlnode_set_namespace(unblock, NS_SIMPLE_BLOCKING);
24820
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1805
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1806 item = xmlnode_new_child(unblock, "item");
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1807 xmlnode_set_attrib(item, "jid", who);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1808
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1809 jabber_iq_send(iq);
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1810 }
0700833f0c5d Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents: 24772
diff changeset
1811
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1812 void jabber_add_feature(const char *namespace, JabberFeatureEnabled cb) {
17576
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
1813 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
1814
ab38146f8f78 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19999
diff changeset
1815 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
1816
17576
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
1817 feat = g_new0(JabberFeature,1);
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1818 feat->namespace = g_strdup(namespace);
17576
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
1819 feat->is_enabled = cb;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1820
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1821 /* try to remove just in case it already exists in the list */
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1822 jabber_remove_feature(namespace);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
1823
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1824 jabber_features = g_list_append(jabber_features, feat);
17563
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17562
diff changeset
1825 }
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17562
diff changeset
1826
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1827 void jabber_remove_feature(const char *namespace) {
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1828 GList *feature;
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1829 for(feature = jabber_features; feature; feature = feature->next) {
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1830 JabberFeature *feat = (JabberFeature*)feature->data;
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1831 if(!strcmp(feat->namespace, namespace)) {
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1832 g_free(feat->namespace);
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1833 g_free(feature->data);
21538
4e5bef6c3379 Fix #3669
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21418
diff changeset
1834 jabber_features = g_list_delete_link(jabber_features, feature);
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1835 break;
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1836 }
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
1837 }
17563
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17562
diff changeset
1838 }
95affacf6f82 Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents: 17562
diff changeset
1839
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1840 static void jabber_features_destroy(void)
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1841 {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1842 while (jabber_features) {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1843 JabberFeature *feature = jabber_features->data;
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1844 g_free(feature->namespace);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1845 g_free(feature);
28811
c3be1de8abde jabber: Oops. --leaks.
Paul Aurich <paul@darkrain42.org>
parents: 28793
diff changeset
1846 jabber_features = g_list_delete_link(jabber_features, jabber_features);
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1847 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1848 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1849
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
1850 void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name) {
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1851 GList *identity;
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1852 JabberIdentity *ident;
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1853 /* both required according to XEP-0030 */
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1854 g_return_if_fail(category != NULL);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1855 g_return_if_fail(type != NULL);
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
1856
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1857 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: 23287
diff changeset
1858 JabberIdentity *ident = (JabberIdentity*)identity->data;
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
1859 if (!strcmp(ident->category, category) &&
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
1860 !strcmp(ident->type, type) &&
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
1861 ((!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: 25747
diff changeset
1862 return;
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
1863 }
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1864 }
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
1865
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1866 ident = g_new0(JabberIdentity, 1);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1867 ident->category = g_strdup(category);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1868 ident->type = g_strdup(type);
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
1869 ident->lang = g_strdup(lang);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1870 ident->name = g_strdup(name);
26850
966d2f2f86c8 Don't crash when the caps cb is NULL and don't corrupt jabber_identities
Paul Aurich <paul@darkrain42.org>
parents: 26842
diff changeset
1871 jabber_identities = g_list_prepend(jabber_identities, ident);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1872 }
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
1873
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1874 static void jabber_identities_destroy(void)
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1875 {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1876 while (jabber_identities) {
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1877 JabberIdentity *id = jabber_identities->data;
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1878 g_free(id->category);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1879 g_free(id->type);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1880 g_free(id->lang);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1881 g_free(id->name);
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1882 g_free(id);
28811
c3be1de8abde jabber: Oops. --leaks.
Paul Aurich <paul@darkrain42.org>
parents: 28793
diff changeset
1883 jabber_identities = g_list_delete_link(jabber_identities, jabber_identities);
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1884 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1885 }
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
1886
26354
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
1887 gboolean jabber_stream_is_ssl(JabberStream *js)
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
1888 {
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
1889 return (js->bosh && jabber_bosh_connection_is_ssl(js->bosh)) ||
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
1890 (!js->bosh && js->gsc);
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
1891 }
fcee93c74230 BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents: 26352
diff changeset
1892
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
1893 const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1894 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1895 return "jabber";
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1896 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1897
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
1898 const char* jabber_list_emblem(PurpleBuddy *b)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1899 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1900 JabberStream *js;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1901 JabberBuddy *jb = NULL;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
1902 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b));
27136
dd7e7071d46d Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <paul@darkrain42.org>
parents: 27135
diff changeset
1903
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
1904 if(!gc)
15498
0d4890637238 clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15463
diff changeset
1905 return NULL;
0d4890637238 clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15463
diff changeset
1906
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
1907 js = gc->proto_data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1908 if(js)
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
1909 jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1910
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1911 if(!PURPLE_BUDDY_IS_ONLINE(b)) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1912 if(jb && (jb->subscription & JABBER_SUB_PENDING ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1913 !(jb->subscription & JABBER_SUB_TO)))
15463
0b6f337a46d5 Emblems in the blist
Sean Egan <seanegan@gmail.com>
parents: 15374
diff changeset
1914 return "not-authorized";
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1915 }
27136
dd7e7071d46d Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <paul@darkrain42.org>
parents: 27135
diff changeset
1916
25836
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1917 if (jb) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1918 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, NULL);
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1919 if (jbr) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1920 const gchar *client_type =
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1921 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: 25066
diff changeset
1922
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1923 if (client_type) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1924 if (strcmp(client_type, "phone") == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1925 return "mobile";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1926 } else if (strcmp(client_type, "web") == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1927 return "external";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1928 } else if (strcmp(client_type, "handheld") == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1929 return "hiptop";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1930 } else if (strcmp(client_type, "bot") == 0) {
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1931 return "bot";
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1932 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1933 /* the default value "pc" falls through and has no emblem */
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1934 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1935 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1936 }
1d3274111180 Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents: 25066
diff changeset
1937
15463
0b6f337a46d5 Emblems in the blist
Sean Egan <seanegan@gmail.com>
parents: 15374
diff changeset
1938 return NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1939 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1940
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
1941 char *jabber_status_text(PurpleBuddy *b)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1942 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1943 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
1944 JabberBuddy *jb = NULL;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
1945 PurpleAccount *account = purple_buddy_get_account(b);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
1946 PurpleConnection *gc = purple_account_get_connection(account);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
1947
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
1948 if (gc && gc->proto_data)
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
1949 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1950
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1951 if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1952 ret = g_strdup(_("Not Authorized"));
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
1953 } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1954 ret = g_strdup(jb->error_msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1955 } else {
26773
803e05b3a871 Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents: 26767
diff changeset
1956 PurplePresence *presence = purple_buddy_get_presence(b);
27563
7a2891487a00 Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27514
diff changeset
1957 PurpleStatus *status = purple_presence_get_active_status(presence);
27603
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1958 const char *message;
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1959
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1960 if((message = purple_status_get_attr_string(status, "message"))) {
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1961 ret = g_markup_escape_text(message, -1);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1962 } else if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1963 PurpleStatus *status = purple_presence_get_status(presence, "tune");
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1964 const char *title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1965 const char *artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1966 const char *album = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM);
a12574d982a1 merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27593 27563
diff changeset
1967 ret = purple_util_format_song_info(title, artist, album, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1968 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1969 }
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 ret;
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
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1974 static void
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
1975 jabber_tooltip_add_resource_text(JabberBuddyResource *jbr,
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1976 PurpleNotifyUserInfo *user_info, gboolean multiple_resources)
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1977 {
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1978 char *text = NULL;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1979 char *res = NULL;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1980 char *label, *value;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1981 const char *state;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1982
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1983 if(jbr->status) {
27563
7a2891487a00 Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27514
diff changeset
1984 text = g_markup_escape_text(jbr->status, -1);
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1985 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1986
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1987 if(jbr->name)
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1988 res = g_strdup_printf(" (%s)", jbr->name);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1989
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1990 state = jabber_buddy_state_get_name(jbr->state);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1991 if (text != NULL && !purple_utf8_strcasecmp(state, text)) {
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1992 g_free(text);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1993 text = NULL;
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1994 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1995
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1996 label = g_strdup_printf("%s%s", _("Status"), (res ? res : ""));
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1997 value = g_strdup_printf("%s%s%s", state, (text ? ": " : ""), (text ? text : ""));
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1998
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
1999 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: 25969
diff changeset
2000 g_free(label);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2001 g_free(value);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2002 g_free(text);
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2003
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2004 /* if the resource is idle, show that */
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2005 /* only show it if there is more than one resource available for
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2006 the buddy, since the "general" idleness will be shown anyway,
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2007 this way we can see see the idleness of lower-priority resources */
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2008 if (jbr->idle && multiple_resources) {
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2009 gchar *idle_str =
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2010 purple_str_seconds_to_string(time(NULL) - jbr->idle);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2011 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: 25969
diff changeset
2012 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: 25969
diff changeset
2013 g_free(idle_str);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2014 g_free(label);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2015 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2016 g_free(res);
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2017 }
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2018
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
2019 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2020 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2021 JabberBuddy *jb;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2022 PurpleAccount *account;
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2023 PurpleConnection *gc;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2024
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2025 g_return_if_fail(b != NULL);
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2026
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2027 account = purple_buddy_get_account(b);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2028 g_return_if_fail(account != NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2029
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2030 gc = purple_account_get_connection(account);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2031 g_return_if_fail(gc != NULL);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2032 g_return_if_fail(gc->proto_data != NULL);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2033
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2034 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2035
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2036 if(jb) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2037 JabberBuddyResource *jbr = NULL;
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2038 PurplePresence *presence = purple_buddy_get_presence(b);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2039 const char *sub;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2040 GList *l;
19722
eedf2918aace Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@gmail.com>
parents: 19696
diff changeset
2041 const char *mood;
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2042 gboolean multiple_resources =
25968
65f2c84f122f Only show idle time for idle resources in tooltip text when there is more than
Marcus Lundblad <ml@update.uu.se>
parents: 25963
diff changeset
2043 jb->resources && g_list_next(jb->resources);
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2044 JabberBuddyResource *top_jbr = jabber_buddy_find_resource(jb, NULL);
25974
8202f850ca9e Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents: 25973
diff changeset
2045
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2046 /* resource-specific info for the top resource */
25975
1ad482221d70 Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents: 25974
diff changeset
2047 if (top_jbr) {
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2048 jabber_tooltip_add_resource_text(top_jbr, user_info,
25975
1ad482221d70 Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents: 25974
diff changeset
2049 multiple_resources);
1ad482221d70 Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents: 25974
diff changeset
2050 }
25974
8202f850ca9e Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents: 25973
diff changeset
2051
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2052 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
2053 jbr = l->data;
25972
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2054 /* the remaining resources */
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2055 if (jbr != top_jbr) {
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2056 jabber_tooltip_add_resource_text(jbr, user_info,
e3f2b16f75da Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25969
diff changeset
2057 multiple_resources);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2058 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2059 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2060
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2061 if (full) {
17573
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17572
diff changeset
2062 PurpleStatus *status;
23271
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2063
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2064 status = purple_presence_get_active_status(presence);
23271
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2065 mood = purple_status_get_attr_string(status, "mood");
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2066 if(mood != NULL) {
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2067 const char *moodtext;
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2068 moodtext = purple_status_get_attr_string(status, "moodtext");
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2069 if(moodtext != NULL) {
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2070 char *moodplustext = g_strdup_printf("%s (%s)", mood, moodtext);
e7b6767f263b The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents: 23182
diff changeset
2071
17573
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17572
diff changeset
2072 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: 17572
diff changeset
2073 g_free(moodplustext);
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17572
diff changeset
2074 } else
2f067d8fb19a Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17572
diff changeset
2075 purple_notify_user_info_add_pair(user_info, _("Mood"), mood);
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2076 }
22000
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2077 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
2078 PurpleStatus *tune = purple_presence_get_status(presence, "tune");
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2079 const char *title = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE);
22000
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2080 const char *artist = purple_status_get_attr_string(tune, PURPLE_TUNE_ARTIST);
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2081 const char *album = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM);
27894
f3477b0d32f4 improved "now listening" status support.
Yoshiki Yazawa <yaz@honeyplanet.jp>
parents: 27892
diff changeset
2082
22000
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2083 char *playing = purple_util_format_song_info(title, artist, album, NULL);
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2084 if (playing) {
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2085 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: 21978
diff changeset
2086 g_free(playing);
af0426c34c27 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21978
diff changeset
2087 }
20571
c97e3ab9ef11 Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents: 20570
diff changeset
2088 }
25969
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2089
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2090 if(jb->subscription & JABBER_SUB_FROM) {
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2091 if(jb->subscription & JABBER_SUB_TO)
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2092 sub = _("Both");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2093 else if(jb->subscription & JABBER_SUB_PENDING)
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2094 sub = _("From (To pending)");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2095 else
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2096 sub = _("From");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2097 } else {
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2098 if(jb->subscription & JABBER_SUB_TO)
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2099 sub = _("To");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2100 else if(jb->subscription & JABBER_SUB_PENDING)
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2101 sub = _("None (To pending)");
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2102 else
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2103 sub = _("None");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2104 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2105
25969
a8224eb86581 Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents: 25968
diff changeset
2106 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: 25968
diff changeset
2107
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2108 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2109
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2110 if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2111 purple_notify_user_info_add_pair(user_info, _("Error"), jb->error_msg);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2112 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2113 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2114 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2115
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
2116 GList *jabber_status_types(PurpleAccount *account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2117 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2118 PurpleStatusType *type;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2119 GList *types = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2120 PurpleValue *priority_value;
24122
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2121 PurpleValue *buzz_enabled;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2122
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2123 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2124 purple_value_set_int(priority_value, 1);
24122
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2125 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2126 purple_value_set_boolean(buzz_enabled, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2127 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2128 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
2129 NULL, TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2130 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2131 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2132 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2133 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2134 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
24122
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2135 "buzz", _("Allow Buzz"), buzz_enabled,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2136 NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2137 types = g_list_append(types, type);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2138
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2139 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2140 purple_value_set_int(priority_value, 1);
24707
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2141 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2142 purple_value_set_boolean(buzz_enabled, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2143 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2144 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
2145 _("Chatty"), TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2146 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2147 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2148 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2149 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2150 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
24122
04d8a514d2bb Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents: 23988
diff changeset
2151 "buzz", _("Allow Buzz"), buzz_enabled,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2152 NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2153 types = g_list_append(types, type);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2154
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2155 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2156 purple_value_set_int(priority_value, 0);
24707
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2157 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2158 purple_value_set_boolean(buzz_enabled, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2159 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2160 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
2161 NULL, TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2162 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2163 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2164 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2165 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2166 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2167 "buzz", _("Allow Buzz"), buzz_enabled,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2168 NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2169 types = g_list_append(types, type);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2170
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2171 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2172 purple_value_set_int(priority_value, 0);
24707
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2173 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN);
7b93616f7982 Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents: 24705
diff changeset
2174 purple_value_set_boolean(buzz_enabled, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2175 type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2176 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
2177 NULL, TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2178 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2179 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2180 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2181 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2182 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2183 "buzz", _("Allow Buzz"), buzz_enabled,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2184 NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2185 types = g_list_append(types, type);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2186
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2187 priority_value = purple_value_new(PURPLE_TYPE_INT);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2188 purple_value_set_int(priority_value, 0);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2189 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2190 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
2191 _("Do Not Disturb"), TRUE, TRUE, FALSE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2192 "priority", _("Priority"), priority_value,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2193 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2194 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
2195 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17596
6842cc73b1b7 Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17593
diff changeset
2196 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2197 NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2198 types = g_list_append(types, type);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2199
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 if(js->protocol_version == JABBER_PROTO_0_9)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2202 m = g_list_append(m, _("Invisible"));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2203 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2204
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2205 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2206 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_UNAVAILABLE),
25050
b5c82724598c For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 24858
diff changeset
2207 NULL, TRUE, TRUE, FALSE,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2208 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2209 NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2210 types = g_list_append(types, type);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2211
20570
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2212 type = purple_status_type_new_with_attrs(PURPLE_STATUS_TUNE,
24409
3a3d36791a47 I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents: 24155
diff changeset
2213 "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
2214 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
2215 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
2216 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
2217 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
2218 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
2219 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
2220 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
2221 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
2222 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
2223 NULL);
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2224 types = g_list_append(types, type);
5913725cbcd6 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20076
diff changeset
2225
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2226 return types;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2227 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2228
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2229 static void
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
2230 jabber_password_change_result_cb(JabberStream *js, const char *from,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
2231 JabberIqType type, const char *id,
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
2232 xmlnode *packet, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2233 {
26547
ae41d8e827e3 Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents: 26546
diff changeset
2234 if (type == JABBER_IQ_RESULT) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2235 purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2236 _("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
2237
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2238 purple_account_set_password(js->gc->account, (char *)data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2239 } 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
2240 char *msg = jabber_parse_error(js, packet, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2241
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2242 purple_notify_error(js->gc, _("Error changing password"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2243 _("Error changing password"), msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2244 g_free(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2245 }
21058
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2246
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2247 g_free(data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2248 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2249
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2250 static void jabber_password_change_cb(JabberStream *js,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2251 PurpleRequestFields *fields)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2252 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2253 const char *p1, *p2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2254 JabberIq *iq;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2255 xmlnode *query, *y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2256
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2257 p1 = purple_request_fields_get_string(fields, "password1");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2258 p2 = purple_request_fields_get_string(fields, "password2");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2259
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2260 if(strcmp(p1, p2)) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2261 purple_notify_error(js->gc, NULL, _("New passwords do not match."), NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2262 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2263 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2264
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2265 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
2266
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2267 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
2268
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2269 query = xmlnode_get_child(iq->node, "query");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2270
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2271 y = xmlnode_new_child(query, "username");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2272 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
2273 y = xmlnode_new_child(query, "password");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2274 xmlnode_insert_data(y, p1, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2275
21058
647b841ea945 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21000
diff changeset
2276 jabber_iq_set_callback(iq, jabber_password_change_result_cb, g_strdup(p1));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2277
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2278 jabber_iq_send(iq);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2279 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2280
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2281 static void jabber_password_change(PurplePluginAction *action)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2282 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2283
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2284 PurpleConnection *gc = (PurpleConnection *) action->context;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2285 JabberStream *js = gc->proto_data;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2286 PurpleRequestFields *fields;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2287 PurpleRequestFieldGroup *group;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2288 PurpleRequestField *field;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2289
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2290 fields = purple_request_fields_new();
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2291 group = purple_request_field_group_new(NULL);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2292 purple_request_fields_add_group(fields, group);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2293
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2294 field = purple_request_field_string_new("password1", _("Password"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2295 "", FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2296 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
2297 purple_request_field_set_required(field, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2298 purple_request_field_group_add_field(group, field);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2299
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2300 field = purple_request_field_string_new("password2", _("Password (again)"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2301 "", FALSE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2302 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
2303 purple_request_field_set_required(field, TRUE);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2304 purple_request_field_group_add_field(group, field);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2305
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2306 purple_request_fields(js->gc, _("Change XMPP Password"),
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16822
diff changeset
2307 _("Change XMPP Password"), _("Please enter your new password"),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2308 fields, _("OK"), G_CALLBACK(jabber_password_change_cb),
16442
08db93bbd798 Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents: 16240
diff changeset
2309 _("Cancel"), NULL,
19999
da29f5c7dc1a Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19722
diff changeset
2310 purple_connection_get_account(gc), NULL, NULL,
21099
51cf02dbdb0e disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents: 21095
diff changeset
2311 js);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2312 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2313
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
2314 GList *jabber_actions(PurplePlugin *plugin, gpointer context)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2315 {
17575
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17573
diff changeset
2316 PurpleConnection *gc = (PurpleConnection *) context;
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17573
diff changeset
2317 JabberStream *js = gc->proto_data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2318 GList *m = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2319 PurplePluginAction *act;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2320
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2321 act = purple_plugin_action_new(_("Set User Info..."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2322 jabber_setup_set_info);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2323 m = g_list_append(m, act);
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 /* if (js->protocol_options & CHANGE_PASSWORD) { */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2326 act = purple_plugin_action_new(_("Change Password..."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2327 jabber_password_change);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2328 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2329 /* } */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2330
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2331 act = purple_plugin_action_new(_("Search for Users..."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2332 jabber_user_search_begin);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2333 m = g_list_append(m, act);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2334
17576
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
2335 purple_debug_info("jabber", "jabber_actions: have pep: %s\n", js->pep?"YES":"NO");
e49b259fc7dd PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents: 17575
diff changeset
2336
17575
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17573
diff changeset
2337 if(js->pep)
5fc8a8a25008 Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents: 17573
diff changeset
2338 jabber_pep_init_actions(&m);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2339
17610
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
2340 if(js->commands)
9a19c46adf66 The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents: 17608
diff changeset
2341 jabber_adhoc_init_server_commands(js, &m);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2342
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2343 return m;
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
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
2346 PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2347 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2348 PurpleBlistNode *gnode, *cnode;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2349 JabberID *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2350
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2351 if(!(jid = jabber_id_new(name)))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2352 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2353
25289
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2354 for(gnode = purple_blist_get_root(); gnode;
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2355 gnode = purple_blist_node_get_sibling_next(gnode)) {
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2356 for(cnode = purple_blist_node_get_first_child(gnode);
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2357 cnode;
aa876d48b5b2 Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24294
diff changeset
2358 cnode = purple_blist_node_get_sibling_next(cnode)) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2359 PurpleChat *chat = (PurpleChat*)cnode;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2360 const char *room, *server;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2361 GHashTable *components;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2362 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2363 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2364
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2365 if (purple_chat_get_account(chat) != account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2366 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2367
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2368 components = purple_chat_get_components(chat);
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2369 if(!(room = g_hash_table_lookup(components, "room")))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2370 continue;
24120
16734635febf Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23988
diff changeset
2371 if(!(server = g_hash_table_lookup(components, "server")))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2372 continue;
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 if(jid->node && jid->domain &&
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2375 !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
2376 jabber_id_free(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2377 return chat;
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 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2380 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2381 jabber_id_free(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2382 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2383 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2384
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
2385 void jabber_convo_closed(PurpleConnection *gc, const char *who)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2386 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2387 JabberStream *js = gc->proto_data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2388 JabberID *jid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2389 JabberBuddy *jb;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2390 JabberBuddyResource *jbr;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2391
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2392 if(!(jid = jabber_id_new(who)))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2393 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2394
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2395 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
2396 (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
2397 if(jbr->thread_id) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2398 g_free(jbr->thread_id);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2399 jbr->thread_id = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2400 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2401 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2402
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2403 jabber_id_free(jid);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2404 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2405
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2406
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2407 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
2408 xmlnode *packet,
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
2409 PurpleConnectionError *reason)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2410 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2411 xmlnode *error;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2412 const char *code = NULL, *text = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2413 const char *xmlns = xmlnode_get_namespace(packet);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2414 char *cdata = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2415
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2416 #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
2417 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
2418
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2419 if((error = xmlnode_get_child(packet, "error"))) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2420 cdata = xmlnode_get_data(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2421 code = xmlnode_get_attrib(error, "code");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2422
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2423 /* Stanza errors */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2424 if(xmlnode_get_child(error, "bad-request")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2425 text = _("Bad Request");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2426 } else if(xmlnode_get_child(error, "conflict")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2427 text = _("Conflict");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2428 } 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
2429 text = _("Feature Not Implemented");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2430 } else if(xmlnode_get_child(error, "forbidden")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2431 text = _("Forbidden");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2432 } else if(xmlnode_get_child(error, "gone")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2433 text = _("Gone");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2434 } 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
2435 text = _("Internal Server Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2436 } 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
2437 text = _("Item Not Found");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2438 } else if(xmlnode_get_child(error, "jid-malformed")) {
16915
56042b2f8b64 s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents: 16822
diff changeset
2439 text = _("Malformed XMPP ID");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2440 } 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
2441 text = _("Not Acceptable");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2442 } 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
2443 text = _("Not Allowed");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2444 } 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
2445 text = _("Not Authorized");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2446 } 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
2447 text = _("Payment Required");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2448 } 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
2449 text = _("Recipient Unavailable");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2450 } else if(xmlnode_get_child(error, "redirect")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2451 /* XXX */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2452 } 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
2453 text = _("Registration Required");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2454 } 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
2455 text = _("Remote Server Not Found");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2456 } 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
2457 text = _("Remote Server Timeout");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2458 } 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
2459 text = _("Server Overloaded");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2460 } 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
2461 text = _("Service Unavailable");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2462 } 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
2463 text = _("Subscription Required");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2464 } 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
2465 text = _("Unexpected Request");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2466 } 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
2467 text = _("Unknown Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2468 }
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
2469 } 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
2470 /* 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
2471 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2472 if(xmlnode_get_child(packet, "aborted")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2473 text = _("Authorization Aborted");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2474 } 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
2475 text = _("Incorrect encoding in authorization");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2476 } 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
2477 text = _("Invalid authzid");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2478 } 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
2479 text = _("Invalid Authorization Mechanism");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2480 } 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
2481 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2482 text = _("Authorization mechanism too weak");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2483 } 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
2484 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
19999
da29f5c7dc1a Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 19722
diff changeset
2485 /* 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: 19722
diff changeset
2486 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: 19722
diff changeset
2487 purple_account_set_password(js->gc->account, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2488 text = _("Not Authorized");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2489 } 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
2490 text = _("Temporary Authentication Failure");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2491 } 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
2492 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2493 text = _("Authentication Failure");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2494 }
15918
4be5d38ee117 Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <mark@kingant.net>
parents: 15916
diff changeset
2495 } 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
2496 (!strcmp(packet->name, "error") && xmlns &&
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
2497 !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
2498 /* Most common reason as default: */
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
2499 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2500 if(xmlnode_get_child(packet, "bad-format")) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2501 text = _("Bad Format");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2502 } 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
2503 text = _("Bad Namespace Prefix");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2504 } else if(xmlnode_get_child(packet, "conflict")) {
21358
ba41f2a60253 Rename:
Will Thompson <will.thompson@collabora.co.uk>
parents: 21355
diff changeset
2505 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2506 text = _("Resource Conflict");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2507 } 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
2508 text = _("Connection Timeout");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2509 } 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
2510 text = _("Host Gone");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2511 } 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
2512 text = _("Host Unknown");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2513 } 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
2514 text = _("Improper Addressing");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2515 } 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
2516 text = _("Internal Server Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2517 } 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
2518 text = _("Invalid ID");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2519 } 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
2520 text = _("Invalid Namespace");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2521 } 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
2522 text = _("Invalid XML");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2523 } 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
2524 text = _("Non-matching Hosts");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2525 } 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
2526 text = _("Not Authorized");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2527 } 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
2528 text = _("Policy Violation");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2529 } 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
2530 text = _("Remote Connection Failed");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2531 } 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
2532 text = _("Resource Constraint");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2533 } 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
2534 text = _("Restricted XML");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2535 } 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
2536 text = _("See Other Host");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2537 } 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
2538 text = _("System Shutdown");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2539 } 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
2540 text = _("Undefined Condition");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2541 } 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
2542 text = _("Unsupported Encoding");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2543 } 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
2544 text = _("Unsupported Stanza Type");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2545 } 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
2546 text = _("Unsupported Version");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2547 } 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
2548 text = _("XML Not Well Formed");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2549 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2550 text = _("Stream Error");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2551 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2552 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2553
20814
bde477ec6a71 Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents: 20792
diff changeset
2554 #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
2555
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2556 if(text || cdata) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2557 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
2558 code ? ": " : "", text ? text : cdata);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2559 g_free(cdata);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2560 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2561 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2562 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2563 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2564 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2565
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2566 static PurpleCmdRet jabber_cmd_chat_config(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2567 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
2568 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2569 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
2570
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2571 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
2572 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
2573
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2574 jabber_chat_request_room_configure(chat);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2575 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2576 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2577
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2578 static PurpleCmdRet jabber_cmd_chat_register(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2579 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
2580 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2581 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
2582
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2583 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
2584 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
2585
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2586 jabber_chat_register(chat);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2587 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2588 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2589
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2590 static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2591 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
2592 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2593 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
2594
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2595 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
2596 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
2597
26766
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2598 if (args && args[0] && *args[0])
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2599 jabber_chat_change_topic(chat, args[0]);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2600 else {
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2601 const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv));
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2602 char *buf, *tmp, *tmp2;
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2603
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2604 if (cur) {
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2605 tmp = g_markup_escape_text(cur, -1);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2606 tmp2 = purple_markup_linkify(tmp);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2607 buf = g_strdup_printf(_("current topic is: %s"), tmp2);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2608 g_free(tmp);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2609 g_free(tmp2);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2610 } else
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2611 buf = g_strdup(_("No topic is set"));
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2612 purple_conv_chat_write(PURPLE_CONV_CHAT(conv), "", buf,
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2613 PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL));
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2614 g_free(buf);
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2615 }
06da00c70eae Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents: 26649
diff changeset
2616
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2617 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2618 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2619
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2620 static PurpleCmdRet jabber_cmd_chat_nick(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2621 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
2622 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2623 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
2624
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2625 if(!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2626 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2627
28793
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2628 if (!jabber_resourceprep_validate(args[0])) {
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2629 *error = g_strdup(_("Invalid nickname"));
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2630 return PURPLE_CMD_RET_FAILED;
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2631 }
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2632
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2633 if (jabber_chat_change_nick(chat, args[0]))
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2634 return PURPLE_CMD_RET_OK;
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2635 else
a335d1bab20e jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents: 28767
diff changeset
2636 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2637 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2638
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2639 static PurpleCmdRet jabber_cmd_chat_part(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2640 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
2641 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2642 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
2643
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2644 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
2645 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
2646
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2647 jabber_chat_part(chat, args ? args[0] : NULL);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2648 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2649 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2650
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2651 static PurpleCmdRet jabber_cmd_chat_ban(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2652 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
2653 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2654 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
2655
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2656 if(!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2657 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2658
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2659 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
2660 *error = g_strdup_printf(_("Unable to ban user %s"), args[0]);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2661 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2662 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2663
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2664 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2665 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2666
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2667 static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2668 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
2669 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2670 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
2671
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2672 if (!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2673 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2674
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2675 if (strcmp(args[0], "owner") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2676 strcmp(args[0], "admin") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2677 strcmp(args[0], "member") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2678 strcmp(args[0], "outcast") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2679 strcmp(args[0], "none") != 0) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2680 *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[0]);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2681 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2682 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2683
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2684 if (args[1]) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2685 int i;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2686 char **nicks = g_strsplit(args[1], " ", -1);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2687
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2688 for (i = 0; nicks[i]; ++i)
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2689 if (!jabber_chat_affiliate_user(chat, nicks[i], args[0])) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2690 *error = g_strdup_printf(_("Unable to affiliate user %s as \"%s\""), nicks[i], args[0]);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2691 g_strfreev(nicks);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2692 return PURPLE_CMD_RET_FAILED;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2693 }
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2694
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2695 g_strfreev(nicks);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2696 } else {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2697 jabber_chat_affiliation_list(chat, args[0]);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2698 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2699
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2700 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2701 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2702
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2703 static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2704 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
2705 {
18855
28a7c9dbbc2b Fix uninitialized variable access.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18711
diff changeset
2706 JabberChat *chat = jabber_chat_find_by_conv(conv);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2707
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2708 if (!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2709 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2710
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2711 if (strcmp(args[0], "moderator") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2712 strcmp(args[0], "participant") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2713 strcmp(args[0], "visitor") != 0 &&
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2714 strcmp(args[0], "none") != 0) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2715 *error = g_strdup_printf(_("Unknown role: \"%s\""), args[0]);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2716 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2717 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2718
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2719 if (args[1]) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2720 int i;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2721 char **nicks = g_strsplit(args[1], " ", -1);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2722
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2723 for (i = 0; nicks[i]; i++)
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2724 if (!jabber_chat_role_user(chat, nicks[i], args[0])) {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2725 *error = g_strdup_printf(_("Unable to set role \"%s\" for user: %s"),
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2726 args[0], nicks[i]);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2727 return PURPLE_CMD_RET_FAILED;
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2728 }
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2729
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2730 g_strfreev(nicks);
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2731 } else {
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
2732 jabber_chat_role_list(chat, args[0]);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2733 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2734 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2735 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2736
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2737 static PurpleCmdRet jabber_cmd_chat_invite(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2738 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
2739 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2740 if(!args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2741 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2742
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2743 jabber_chat_invite(purple_conversation_get_gc(conv),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2744 purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), args[1] ? args[1] : "",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2745 args[0]);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2746
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2747 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2748 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2749
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2750 static PurpleCmdRet jabber_cmd_chat_join(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2751 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
2752 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2753 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
2754 GHashTable *components;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2755
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2756 if(!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2757 return PURPLE_CMD_RET_FAILED;
15374
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 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
2760
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2761 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
2762 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
2763 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
2764 if(args[1])
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2765 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
2766
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2767 jabber_chat_join(purple_conversation_get_gc(conv), components);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2768
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2769 g_hash_table_destroy(components);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2770 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2771 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2772
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2773 static PurpleCmdRet jabber_cmd_chat_kick(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2774 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
2775 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2776 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
2777
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2778 if(!chat || !args || !args[0])
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2779 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2780
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2781 if(!jabber_chat_kick_user(chat, args[0], args[1])) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2782 *error = g_strdup_printf(_("Unable to kick user %s"), args[0]);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2783 return PURPLE_CMD_RET_FAILED;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2784 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2785
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2786 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2787 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2788
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2789 static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2790 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
2791 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2792 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
2793 char *who;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2794
18711
259f8635eeff Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents: 18323
diff changeset
2795 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
2796 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
2797
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2798 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
2799
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2800 jabber_message_send_im(purple_conversation_get_gc(conv), who, args[1], 0);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2801
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2802 g_free(who);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
2803 return PURPLE_CMD_RET_OK;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2804 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2805
17562
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2806 static PurpleCmdRet jabber_cmd_ping(PurpleConversation *conv,
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2807 const char *cmd, char **args, char **error, void *data)
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2808 {
25984
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2809 PurpleAccount *account;
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2810 PurpleConnection *pc;
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2811
17562
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2812 if(!args || !args[0])
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2813 return PURPLE_CMD_RET_FAILED;
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2814
25984
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2815 account = purple_conversation_get_account(conv);
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2816 pc = purple_account_get_connection(account);
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2817
d24b476cc60f Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents: 25983
diff changeset
2818 if(!jabber_ping_jid(purple_connection_get_protocol_data(pc), args[0])) {
17562
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2819 *error = g_strdup_printf(_("Unable to ping user %s"), args[0]);
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2820 return PURPLE_CMD_RET_FAILED;
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2821 }
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2822
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2823 return PURPLE_CMD_RET_OK;
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2824 }
6ab1089e2101 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents: 17561
diff changeset
2825
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2826 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
2827
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2828 JabberBuddy *jb;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2829 JabberBuddyResource *jbr;
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2830 PurpleConnection *gc = js->gc;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2831 PurpleBuddy *buddy =
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
2832 purple_find_buddy(purple_connection_get_account(gc), username);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2833 const gchar *alias =
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
2834 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
2835
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2836 if(!username)
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2837 return FALSE;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2838
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2839 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
2840 if(!jb) {
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
2841 *error = g_strdup_printf(_("Unable to buzz, because there is nothing "
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
2842 "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
2843 return FALSE;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2844 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2845
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2846 jbr = jabber_buddy_find_resource(jb, NULL);
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2847 if (!jbr) {
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2848 *error = g_strdup_printf(_("Unable to buzz, because %s might be offline."),
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
2849 alias);
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2850 return FALSE;
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2851 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2852
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
2853 if (jabber_resource_has_capability(jbr, NS_ATTENTION)) {
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2854 xmlnode *buzz, *msg = xmlnode_new("message");
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2855 gchar *to;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2856
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2857 to = g_strdup_printf("%s/%s", username, jbr->name);
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2858 xmlnode_set_attrib(msg, "to", to);
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2859 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
2860
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2861 /* avoid offline storage */
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2862 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
2863
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2864 buzz = xmlnode_new_child(msg, "attention");
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
2865 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
2866
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2867 jabber_send(js, msg);
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2868 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
2869
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2870 return TRUE;
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2871 } else {
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
2872 *error = g_strdup_printf(_("Unable to buzz, because %s does "
25985
7ace7bf0bfad Use "does" here sounds more natural to me
Mark Doliner <mark@kingant.net>
parents: 25443
diff changeset
2873 "not support it or does not wish to receive buzzes now."), alias);
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2874 return FALSE;
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2875 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2876 }
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2877
17615
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
2878 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv,
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
2879 const char *cmd, char **args, char **error, void *data)
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
2880 {
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
2881 JabberStream *js = conv->account->gc->proto_data;
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2882 const gchar *who;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2883
24153
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2884 if (!args || !args[0]) {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2885 /* use the buddy from conversation, if it's a one-to-one conversation */
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2886 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2887 who = purple_conversation_get_name(conv);
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2888 } else {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2889 return PURPLE_CMD_RET_FAILED;
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2890 }
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2891 } else {
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2892 who = args[0];
a64d90cff01f Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents: 24123
diff changeset
2893 }
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2894
25197
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2895 if (_jabber_send_buzz(js, who, error)) {
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2896 const gchar *alias;
25199
3f4bedafc86e Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents: 25197
diff changeset
2897 gchar *str;
25197
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2898 PurpleBuddy *buddy =
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2899 purple_find_buddy(purple_connection_get_account(conv->account->gc),
25197
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2900 who);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2901
25197
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2902 if (buddy != NULL)
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2903 alias = purple_buddy_get_contact_alias(buddy);
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2904 else
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2905 alias = who;
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2906
25197
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2907 str = g_strdup_printf(_("Buzzing %s..."), alias);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2908 purple_conversation_write(conv, NULL, str,
25197
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2909 PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, time(NULL));
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2910 g_free(str);
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
2911
25197
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2912 return PURPLE_CMD_RET_OK;
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2913 } else {
17615
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
2914 return PURPLE_CMD_RET_FAILED;
25197
8dee1fb9d8e9 Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents: 25196
diff changeset
2915 }
17615
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
2916 }
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
2917
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2918 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
2919 {
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2920 static GList *types = NULL;
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2921
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2922 if (!types) {
22097
eab7d03edfcb This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22034
diff changeset
2923 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
2924 _("%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
2925 }
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2926
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2927 return types;
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2928 }
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2929
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2930 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
2931 {
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2932 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
2933 gchar *error = NULL;
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2934
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2935 if (!_jabber_send_buzz(js, username, &error)) {
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2936 purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)");
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2937 g_free(error);
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2938 return FALSE;
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2939 }
20852
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2940
6cc03752fe59 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 20851
diff changeset
2941 return TRUE;
20149
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2942 }
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2943
be2538a92099 Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents: 20076
diff changeset
2944
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
2945 gboolean jabber_offline_message(const PurpleBuddy *buddy)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2946 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2947 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2948 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2949
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2950 #ifdef USE_VV
26539
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
2951 gboolean
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
2952 jabber_audio_enabled(JabberStream *js, const char *namespace)
26535
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2953 {
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2954 PurpleMediaManager *manager = purple_media_manager_get();
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2955 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager);
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2956
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2957 return (caps & (PURPLE_MEDIA_CAPS_AUDIO | PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION));
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2958 }
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2959
27079
72bcdcb0629f Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 27069
diff changeset
2960 gboolean
26539
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
2961 jabber_video_enabled(JabberStream *js, const char *namespace)
26535
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2962 {
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2963 PurpleMediaManager *manager = purple_media_manager_get();
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2964 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager);
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2965
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2966 return (caps & (PURPLE_MEDIA_CAPS_VIDEO | PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION));
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2967 }
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
2968
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2969 typedef struct {
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
2970 PurpleAccount *account;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2971 gchar *who;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2972 PurpleMediaSessionType type;
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
2973
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2974 } JabberMediaRequest;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2975
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2976 static void
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2977 jabber_media_cancel_cb(JabberMediaRequest *request,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2978 PurpleRequestFields *fields)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2979 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2980 g_free(request->who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2981 g_free(request);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2982 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2983
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2984 static void
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2985 jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestFields *fields)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2986 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2987 PurpleRequestField *field =
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2988 purple_request_fields_get_field(fields, "resource");
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2989 int selected_id = purple_request_field_choice_get_value(field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2990 GList *labels = purple_request_field_choice_get_labels(field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2991 gchar *who = g_strdup_printf("%s/%s", request->who,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2992 (gchar*)g_list_nth_data(labels, selected_id));
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
2993 jabber_initiate_media(request->account, who, request->type);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2994
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2995 g_free(who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2996 g_free(request->who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2997 g_free(request);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2998 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
2999 #endif
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3000
26447
34eb898478b4 Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26417
diff changeset
3001 gboolean
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
3002 jabber_initiate_media(PurpleAccount *account, const char *who,
25720
551a462b346a Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25718
diff changeset
3003 PurpleMediaSessionType type)
25637
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3004 {
26416
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3005 #ifdef USE_VV
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3006 JabberStream *js = (JabberStream *)
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3007 purple_account_get_connection(account)->proto_data;
26081
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3008 JabberBuddy *jb;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3009 JabberBuddyResource *jbr = NULL;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3010 char *resource;
26081
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3011
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3012 if (!js) {
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3013 purple_debug_error("jabber",
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3014 "jabber_initiate_media: NULL stream\n");
26447
34eb898478b4 Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26417
diff changeset
3015 return FALSE;
26081
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3016 }
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3017
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3018
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3019 if((resource = jabber_get_resource(who)) != NULL) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3020 /* they've specified a resource, no need to ask or
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3021 * default or anything, just do it */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3022
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3023 jb = jabber_buddy_find(js, who, FALSE);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3024 jbr = jabber_buddy_find_resource(jb, resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3025 g_free(resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3026
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3027 if (type & PURPLE_MEDIA_AUDIO &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3028 !jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3029 JINGLE_APP_RTP_SUPPORT_AUDIO) &&
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3030 jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE))
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3031 return jabber_google_session_initiate(js, who, type);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3032 else
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3033 return jingle_rtp_initiate_media(js, who, type);
26081
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3034 }
44a528094cbf Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26062
diff changeset
3035
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3036 jb = jabber_buddy_find(js, who, FALSE);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3037
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3038 if(!jb || !jb->resources) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3039 /* no resources online, we're trying to initiate with someone
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3040 * whose presence we're not subscribed to, or
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3041 * someone who is offline. Let's inform the user */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3042 char *msg;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3043
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3044 if(!jb) {
26518
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26514
diff changeset
3045 msg = g_strdup_printf(_("Unable to initiate media with %s: invalid JID"), who);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3046 } else if(jb->subscription & JABBER_SUB_TO) {
26518
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26514
diff changeset
3047 msg = g_strdup_printf(_("Unable to initiate media with %s: user is not online"), who);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3048 } else {
26518
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26514
diff changeset
3049 msg = g_strdup_printf(_("Unable to initiate media with %s: not subscribed to user presence"), who);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3050 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3051
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3052 purple_notify_error(account, _("Media Initiation Failed"),
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3053 _("Media Initiation Failed"), msg);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3054 g_free(msg);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3055 return FALSE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3056 } else if(!jb->resources->next) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3057 /* only 1 resource online (probably our most common case)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3058 * so no need to ask who to initiate with */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3059 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3060 gboolean result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3061 jbr = jb->resources->data;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3062 name = g_strdup_printf("%s/%s", who, jbr->name);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3063 result = jabber_initiate_media(account, name, type);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3064 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3065 return result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3066 } else {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3067 /* we've got multiple resources,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3068 * we need to pick one to initiate with */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3069 GList *l;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3070 char *msg;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3071 PurpleRequestFields *fields;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3072 PurpleRequestField *field = purple_request_field_choice_new(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3073 "resource", _("Resource"), 0);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3074 PurpleRequestFieldGroup *group;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3075 JabberMediaRequest *request;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3076
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3077 for(l = jb->resources; l; l = l->next)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3078 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3079 JabberBuddyResource *ljbr = l->data;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3080 PurpleMediaCaps caps;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3081 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3082 name = g_strdup_printf("%s/%s", who, ljbr->name);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3083 caps = jabber_get_media_caps(account, name);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3084 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3085
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3086 if ((type & PURPLE_MEDIA_AUDIO) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3087 (type & PURPLE_MEDIA_VIDEO)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3088 if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3089 jbr = ljbr;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3090 purple_request_field_choice_add(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3091 field, jbr->name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3092 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3093 } else if (type & (PURPLE_MEDIA_AUDIO) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3094 (caps & PURPLE_MEDIA_CAPS_AUDIO)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3095 jbr = ljbr;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3096 purple_request_field_choice_add(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3097 field, jbr->name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3098 }else if (type & (PURPLE_MEDIA_VIDEO) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3099 (caps & PURPLE_MEDIA_CAPS_VIDEO)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3100 jbr = ljbr;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3101 purple_request_field_choice_add(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3102 field, jbr->name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3103 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3104 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3105
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3106 if (jbr == NULL) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3107 purple_debug_error("jabber",
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3108 "No resources available\n");
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3109 return FALSE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3110 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3111
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3112 if (g_list_length(purple_request_field_choice_get_labels(
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3113 field)) <= 1) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3114 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3115 gboolean result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3116 purple_request_field_destroy(field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3117 name = g_strdup_printf("%s/%s", who, jbr->name);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3118 result = jabber_initiate_media(account, name, type);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3119 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3120 return result;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3121 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3122
26518
28f1512b0f94 Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26514
diff changeset
3123 msg = g_strdup_printf(_("Please select the resource of %s with which you would like to start a media session."), who);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3124 fields = purple_request_fields_new();
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3125 group = purple_request_field_group_new(NULL);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3126 request = g_new0(JabberMediaRequest, 1);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3127 request->account = account;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3128 request->who = g_strdup(who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3129 request->type = type;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3130
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3131 purple_request_field_group_add_field(group, field);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3132 purple_request_fields_add_group(fields, group);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3133 purple_request_fields(account, _("Select a Resource"), msg,
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3134 NULL, fields, _("Initiate Media"),
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3135 G_CALLBACK(jabber_media_ok_cb), _("Cancel"),
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3136 G_CALLBACK(jabber_media_cancel_cb),
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3137 account, who, NULL, request);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3138
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3139 g_free(msg);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3140 return TRUE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3141 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3142 #endif
26447
34eb898478b4 Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26417
diff changeset
3143 return FALSE;
25637
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3144 }
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3145
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3146 PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who)
25637
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3147 {
26416
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3148 #ifdef USE_VV
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3149 JabberStream *js = (JabberStream *)
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3150 purple_account_get_connection(account)->proto_data;
25665
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3151 JabberBuddy *jb;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3152 JabberBuddyResource *jbr;
26190
d6e23439b77c Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26168
diff changeset
3153 PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE;
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3154 gchar *resource;
25665
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3155
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3156 if (!js) {
26500
da651b0f40a1 Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26447
diff changeset
3157 purple_debug_info("jabber",
da651b0f40a1 Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26447
diff changeset
3158 "jabber_can_do_media: NULL stream\n");
25665
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3159 return FALSE;
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3160 }
1f085713c281 Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25664
diff changeset
3161
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3162 if ((resource = jabber_get_resource(who)) != NULL) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3163 /* they've specified a resource, no need to ask or
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3164 * default or anything, just do it */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3165
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3166 jb = jabber_buddy_find(js, who, FALSE);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3167 jbr = jabber_buddy_find_resource(jb, resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3168 g_free(resource);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3169
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3170 if (!jbr) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3171 purple_debug_error("jabber", "jabber_get_media_caps:"
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3172 " Can't find resource %s\n", who);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3173 return caps;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3174 }
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3175
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3176 if (jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3177 JINGLE_APP_RTP_SUPPORT_AUDIO))
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3178 caps |= PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION |
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3179 PURPLE_MEDIA_CAPS_AUDIO;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3180 if (jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3181 JINGLE_APP_RTP_SUPPORT_VIDEO))
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3182 caps |= PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION |
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3183 PURPLE_MEDIA_CAPS_VIDEO;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3184 if (caps & PURPLE_MEDIA_CAPS_AUDIO && caps &
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3185 PURPLE_MEDIA_CAPS_VIDEO)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3186 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3187 if (caps != PURPLE_MEDIA_CAPS_NONE) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3188 if (!jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3189 JINGLE_TRANSPORT_ICEUDP) &&
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3190 !jabber_resource_has_capability(jbr,
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3191 JINGLE_TRANSPORT_RAWUDP)) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3192 purple_debug_info("jingle-rtp", "Buddy doesn't "
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3193 "support the same transport types\n");
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3194 caps = PURPLE_MEDIA_CAPS_NONE;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3195 } else
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3196 caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION |
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3197 PURPLE_MEDIA_CAPS_CHANGE_DIRECTION;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3198 }
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3199 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE)) {
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3200 caps |= PURPLE_MEDIA_CAPS_AUDIO;
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3201 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VIDEO))
27079
72bcdcb0629f Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 27069
diff changeset
3202 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO;
72bcdcb0629f Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 27069
diff changeset
3203 }
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3204 return caps;
25664
d0ac3c438b71 Check remote JID's capabilities for audio and video XEP support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 25662
diff changeset
3205 }
26046
99055b8db16b Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26043
diff changeset
3206
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3207 jb = jabber_buddy_find(js, who, FALSE);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3208
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3209 if(!jb || !jb->resources) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3210 /* no resources online, we're trying to get caps for someone
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3211 * whose presence we're not subscribed to, or
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3212 * someone who is offline. */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3213 return caps;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3214 } else if(!jb->resources->next) {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3215 /* only 1 resource online (probably our most common case) */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3216 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3217 jbr = jb->resources->data;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3218 name = g_strdup_printf("%s/%s", who, jbr->name);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3219 caps = jabber_get_media_caps(account, name);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3220 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3221 } else {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3222 /* we've got multiple resources, combine their caps */
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3223 GList *l;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3224
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3225 for(l = jb->resources; l; l = l->next)
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3226 {
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3227 gchar *name;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3228 jbr = l->data;
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3229 name = g_strdup_printf("%s/%s", who, jbr->name);
26606
df9042312063 Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26559
diff changeset
3230 caps |= jabber_get_media_caps(account, name);
26514
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3231 g_free(name);
0adf41b3de79 Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26500
diff changeset
3232 }
26046
99055b8db16b Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26043
diff changeset
3233 }
26190
d6e23439b77c Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26168
diff changeset
3234
d6e23439b77c Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26168
diff changeset
3235 return caps;
26416
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3236 #else
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3237 return PURPLE_MEDIA_CAPS_NONE;
6f0200f1e497 Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents: 26361
diff changeset
3238 #endif
25637
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3239 }
92e71f6e10d4 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25635
diff changeset
3240
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3241 gboolean jabber_can_receive_file(PurpleConnection *gc, const char *who)
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3242 {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3243 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: 28893
diff changeset
3244
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3245 if (js) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3246 JabberBuddy *jb = jabber_buddy_find(js, who, FALSE);
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3247 GList *iter;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3248 gboolean has_resources_without_caps = FALSE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3249
28971
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3250 /* if we didn't find a JabberBuddy, we don't have presence for this
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3251 buddy, let's assume they can receive files, disco should tell us
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3252 when actually trying */
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3253 if (jb == NULL)
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3254 return TRUE;
923681c5406e jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents: 28911
diff changeset
3255
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3256 /* find out if there is any resources without caps */
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3257 for (iter = jb->resources; iter ; iter = g_list_next(iter)) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3258 JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3259
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3260 if (!jabber_resource_know_capabilities(jbr)) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3261 has_resources_without_caps = TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3262 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3263 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3264
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3265 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: 28893
diff changeset
3266 /* 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: 28893
diff changeset
3267 let's assume they can receive files... */
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3268 return TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3269 } else {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3270 /* we have caps for all the resources, see if at least one has
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3271 right caps */
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3272 for (iter = jb->resources; iter ; iter = g_list_next(iter)) {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3273 JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3274
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3275 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: 28893
diff changeset
3276 "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: 28893
diff changeset
3277 && (jabber_resource_has_capability(jbr,
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3278 NS_BYTESTREAMS)
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3279 || jabber_resource_has_capability(jbr, NS_IBB))) {
28911
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3280 return TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3281 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3282 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3283 return FALSE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3284 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3285 } else {
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3286 return TRUE;
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3287 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3288 }
738cd1adb3cf jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents: 28893
diff changeset
3289
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
3290 void jabber_register_commands(void)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3291 {
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3292 PurpleCmdId id;
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3293 id = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3294 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3295 "prpl-jabber", jabber_cmd_chat_config,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3296 _("config: Configure a chat room."), NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3297 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3298
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3299 id = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3300 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3301 "prpl-jabber", jabber_cmd_chat_config,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3302 _("configure: Configure a chat room."), NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3303 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3304
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3305 id = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3306 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3307 "prpl-jabber", jabber_cmd_chat_nick,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3308 _("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
3309 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3310 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3311
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3312 id = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3313 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3314 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
28767
4a0d69b9d8a8 jabber: Correct the /part command's help.
Paul Aurich <paul@darkrain42.org>
parents: 28729
diff changeset
3315 jabber_cmd_chat_part, _("part [message]: Leave the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3316 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3317 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3318
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3319 id = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3320 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3321 "prpl-jabber", jabber_cmd_chat_register,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3322 _("register: Register with a chat room."), NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3323 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3324
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3325 /* XXX: there needs to be a core /topic cmd, methinks */
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3326 id = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3327 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3328 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3329 jabber_cmd_chat_topic,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3330 _("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
3331 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3332 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3333
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3334 id = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3335 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3336 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3337 jabber_cmd_chat_ban,
22602
9a84976c8e76 Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents: 22448
diff changeset
3338 _("ban &lt;user&gt; [reason]: Ban a user from the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3339 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3340 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3341
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3342 id = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3343 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3344 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3345 jabber_cmd_chat_affiliate,
26884
af2b87aa82ee Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents: 26859
diff changeset
3346 _("affiliate &lt;owner|admin|member|outcast|none&gt; [nick1] [nick2] ...: Get the users with an affiliation or set users' affiliation with the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3347 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3348 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3349
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3350 id = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3351 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3352 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3353 jabber_cmd_chat_role,
28321
23dda7e57bcf Fix two strings as pointed out on translators@
Paul Aurich <paul@darkrain42.org>
parents: 28319
diff changeset
3354 _("role &lt;moderator|participant|visitor|none&gt; [nick1] [nick2] ...: Get the users with a role or set users' role with the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3355 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3356 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3357
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3358 id = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3359 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3360 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3361 jabber_cmd_chat_invite,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3362 _("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
3363 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3364 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3365
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3366 id = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3367 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3368 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3369 jabber_cmd_chat_join,
22602
9a84976c8e76 Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents: 22448
diff changeset
3370 _("join: &lt;room&gt; [password]: Join a chat on this server."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3371 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3372 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3373
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3374 id = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3375 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3376 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3377 jabber_cmd_chat_kick,
22602
9a84976c8e76 Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents: 22448
diff changeset
3378 _("kick &lt;user&gt; [reason]: Kick a user from the room."),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3379 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3380 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3381
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3382 id = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15766
diff changeset
3383 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3384 "prpl-jabber", jabber_cmd_chat_msg,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3385 _("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
3386 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3387 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3388
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3389 id = purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL,
17572
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3390 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM |
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3391 PURPLE_CMD_FLAG_PRPL_ONLY,
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3392 "prpl-jabber", jabber_cmd_ping,
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3393 _("ping &lt;jid&gt;: Ping a user/component/server."),
2e0799b916b9 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents: 17568
diff changeset
3394 NULL);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3395 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3396
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3397 id = purple_cmd_register("buzz", "w", PURPLE_CMD_P_PRPL,
25443
5f9a24d1c25e Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 25442
diff changeset
3398 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY |
24154
b3ab1c23cdf6 Register the /buzz command using PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS.
Marcus Lundblad <ml@update.uu.se>
parents: 24153
diff changeset
3399 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS,
17615
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
3400 "prpl-jabber", jabber_cmd_buzz,
cca457b9158b disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents: 17614
diff changeset
3401 _("buzz: Buzz a user to get their attention"), NULL);
27514
889bf9af9706 The last command registered wasn't added to the list, so was leaking at uninit.
Paul Aurich <paul@darkrain42.org>
parents: 27463
diff changeset
3402 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3403 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3404
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3405 void jabber_unregister_commands(void)
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3406 {
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3407 while (jabber_cmds != NULL) {
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3408 purple_cmd_unregister(GPOINTER_TO_UINT(jabber_cmds->data));
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3409 jabber_cmds = g_slist_delete_link(jabber_cmds, jabber_cmds);
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3410 }
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3411 }
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3412
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3413 /* IPC functions */
25587
2bf9bf49cea8 * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25586
diff changeset
3414
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3415 /**
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3416 * IPC function for determining if a contact supports a certain feature.
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3417 *
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3418 * @param account The PurpleAccount
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3419 * @param jid The full JID of the contact.
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3420 * @param feature The feature's namespace.
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3421 *
25587
2bf9bf49cea8 * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25586
diff changeset
3422 * @return TRUE if supports feature; else FALSE.
2bf9bf49cea8 * adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25586
diff changeset
3423 */
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3424 static gboolean
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3425 jabber_ipc_contact_has_feature(PurpleAccount *account, const gchar *jid,
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3426 const gchar *feature)
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3427 {
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3428 PurpleConnection *gc = purple_account_get_connection(account);
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3429 JabberStream *js;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3430 JabberBuddy *jb;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3431 JabberBuddyResource *jbr;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3432 gchar *resource;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3433
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3434 if (!purple_account_is_connected(account))
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3435 return FALSE;
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3436 js = gc->proto_data;
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3437
27014
a8537bbcfb79 Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents: 26999
diff changeset
3438 if (!(resource = jabber_get_resource(jid)) ||
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3439 !(jb = jabber_buddy_find(js, jid, FALSE)) ||
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3440 !(jbr = jabber_buddy_find_resource(jb, resource))) {
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3441 g_free(resource);
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3442 return FALSE;
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3443 }
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3444
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3445 g_free(resource);
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3446
25770
b1b1b75a922e Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents: 25763
diff changeset
3447 return jabber_resource_has_capability(jbr, feature);
25585
45816181b7de * fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25575
diff changeset
3448 }
45816181b7de * fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25575
diff changeset
3449
25588
61f37abc8a70 * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25587
diff changeset
3450 static void
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3451 jabber_ipc_add_feature(const gchar *feature)
25588
61f37abc8a70 * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25587
diff changeset
3452 {
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3453 if (!feature)
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3454 return;
25589
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3455 jabber_add_feature(feature, 0);
25747
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3456
504c98a90ef5 constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents: 25742
diff changeset
3457 /* send presence with new caps info for all connected accounts */
25590
7f6558c7a0a3 * implemented jabber_caps_broadcast_change() and finished jabber_ipc_add_feature() IPC function
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25589
diff changeset
3458 jabber_caps_broadcast_change();
25588
61f37abc8a70 * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25587
diff changeset
3459 }
61f37abc8a70 * removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25587
diff changeset
3460
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
3461 void
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
3462 jabber_init_plugin(PurplePlugin *plugin)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3463 {
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3464 GHashTable *ui_info = purple_core_get_ui_info();
27137
2d258a809609 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <paul@darkrain42.org>
parents: 27136
diff changeset
3465 const gchar *ui_type;
27593
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3466 const gchar *type = "pc"; /* default client type, if unknown or
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3467 unspecified */
27593
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3468 const gchar *ui_name = NULL;
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3469
27137
2d258a809609 Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <paul@darkrain42.org>
parents: 27136
diff changeset
3470 ui_type = ui_info ? g_hash_table_lookup(ui_info, "client_type") : NULL;
27064
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3471 if (ui_type) {
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3472 if (strcmp(ui_type, "pc") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3473 strcmp(ui_type, "console") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3474 strcmp(ui_type, "phone") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3475 strcmp(ui_type, "handheld") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3476 strcmp(ui_type, "web") == 0 ||
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3477 strcmp(ui_type, "bot") == 0) {
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3478 type = ui_type;
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3479 }
007dff3cb9e4 Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents: 27063
diff changeset
3480 }
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3481
27593
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3482 if (ui_info)
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3483 ui_name = g_hash_table_lookup(ui_info, "name");
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3484 if (ui_name == NULL)
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3485 ui_name = PACKAGE;
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3486
6b1eb8dbf86e Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents: 27592
diff changeset
3487 jabber_add_identity("client", type, NULL, ui_name);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3488
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3489 /* initialize jabber_features list */
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3490 jabber_add_feature(NS_LAST_ACTIVITY, 0);
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3491 jabber_add_feature(NS_OOB_IQ_DATA, 0);
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3492 jabber_add_feature(NS_ENTITY_TIME, 0);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3493 jabber_add_feature("jabber:iq:version", 0);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3494 jabber_add_feature("jabber:x:conference", 0);
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3495 jabber_add_feature(NS_BYTESTREAMS, 0);
25825
69495c6f12af Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents: 25824
diff changeset
3496 jabber_add_feature("http://jabber.org/protocol/caps", 0);
69495c6f12af Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents: 25824
diff changeset
3497 jabber_add_feature("http://jabber.org/protocol/chatstates", 0);
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3498 jabber_add_feature(NS_DISCO_INFO, 0);
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3499 jabber_add_feature(NS_DISCO_ITEMS, 0);
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3500 jabber_add_feature(NS_IBB, 0);
25575
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3501 jabber_add_feature("http://jabber.org/protocol/muc", 0);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3502 jabber_add_feature("http://jabber.org/protocol/muc#user", 0);
26eabe8e739b Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents: 23287
diff changeset
3503 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: 23287
diff changeset
3504 jabber_add_feature("http://jabber.org/protocol/si/profile/file-transfer", 0);
29031
9ae3e70a327b jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents: 29029
diff changeset
3505 jabber_add_feature(NS_XHTML_IM, 0);
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3506 jabber_add_feature(NS_PING, 0);
26529
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26528
diff changeset
3507
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3508 /* Buzz/Attention */
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3509 jabber_add_feature(NS_ATTENTION, jabber_buzz_isenabled);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3510
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3511 /* Bits Of Binary */
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3512 jabber_add_feature(NS_BOB, 0);
26885
1dfa009f6db5 Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents: 26884
diff changeset
3513
26529
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26528
diff changeset
3514 /* Jingle features! */
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26528
diff changeset
3515 jabber_add_feature(JINGLE, 0);
26536
9131368ba4be Advertise ICEUDP only when libnice is available
Paul Aurich <paul@darkrain42.org>
parents: 26535
diff changeset
3516
26535
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3517 #ifdef USE_VV
29027
9feec7d1d95c jabber: Add the missing file and fix up the Google session namespaces
Paul Aurich <paul@darkrain42.org>
parents: 29026
diff changeset
3518 jabber_add_feature(NS_GOOGLE_PROTOCOL_SESSION, jabber_audio_enabled);
29026
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3519 jabber_add_feature(NS_GOOGLE_VOICE, jabber_audio_enabled);
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3520 jabber_add_feature(NS_GOOGLE_VIDEO, jabber_video_enabled);
7b4ade7c6d8a jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents: 28971
diff changeset
3521 jabber_add_feature(NS_GOOGLE_CAMERA, jabber_video_enabled);
28646
5f97830906bc Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <will.thompson@collabora.co.uk>
parents: 28447
diff changeset
3522 jabber_add_feature(JINGLE_APP_RTP, 0);
26539
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
3523 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_AUDIO, jabber_audio_enabled);
20743d9bd62d Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents: 26536
diff changeset
3524 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled);
28646
5f97830906bc Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <will.thompson@collabora.co.uk>
parents: 28447
diff changeset
3525 jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0);
26819
8b7d1aed6d59 merge of '8ddbfe5d6f5c2455497d11ccbfff769ed4e9fad4'
Paul Aurich <paul@darkrain42.org>
parents: 26818 26537
diff changeset
3526 jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0);
26535
ecf6fd808d23 Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents: 26533
diff changeset
3527 #endif
26529
1ecbda91458a Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents: 26528
diff changeset
3528
29078
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28893
diff changeset
3529 jabber_auth_init();
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28893
diff changeset
3530
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3531 /* IPC functions */
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3532 purple_plugin_ipc_register(plugin, "contact_has_feature", PURPLE_CALLBACK(jabber_ipc_contact_has_feature),
25760
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3533 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER,
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3534 purple_value_new(PURPLE_TYPE_BOOLEAN), 3,
f462fa160f06 Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents: 25747
diff changeset
3535 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT),
25586
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3536 purple_value_new(PURPLE_TYPE_STRING),
e6f92c0f9770 * adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25585
diff changeset
3537 purple_value_new(PURPLE_TYPE_STRING));
26952
92565c8e1e3a Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents: 26885
diff changeset
3538
25589
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3539 purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature),
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3540 purple_marshal_VOID__POINTER,
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3541 NULL, 1,
3f719eaa7fd1 * IPC work
Tobias Markmann <tfar@soc.pidgin.im>
parents: 25588
diff changeset
3542 purple_value_new(PURPLE_TYPE_STRING));
27086
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3543
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3544 /* Modifying these? Look at libxmpp.c:load_plugin for the signal versions */
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3545 purple_plugin_ipc_register(plugin, "register_namespace_watcher",
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3546 PURPLE_CALLBACK(jabber_iq_signal_register),
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3547 purple_marshal_VOID__POINTER_POINTER,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3548 NULL, 2,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3549 purple_value_new(PURPLE_TYPE_STRING), /* node */
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3550 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3551
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3552 purple_plugin_ipc_register(plugin, "unregister_namespace_watcher",
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3553 PURPLE_CALLBACK(jabber_iq_signal_unregister),
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3554 purple_marshal_VOID__POINTER_POINTER,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3555 NULL, 2,
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3556 purple_value_new(PURPLE_TYPE_STRING), /* node */
60cb86295f08 Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents: 27084
diff changeset
3557 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
3558 }
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
3559
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
3560 void
28893
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28891
diff changeset
3561 jabber_uninit_plugin(PurplePlugin *plugin)
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
3562 {
28893
96ba7fd24177 jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents: 28891
diff changeset
3563 purple_plugin_ipc_unregister_all(plugin);
26952
92565c8e1e3a Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents: 26885
diff changeset
3564
29078
8ada06fb65ed jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents: 28893
diff changeset
3565 jabber_auth_uninit();
25763
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
3566 jabber_features_destroy();
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
3567 jabber_identities_destroy();
860ebaf275ae Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents: 25761
diff changeset
3568 }