Mercurial > pidgin.yaz
annotate libpurple/protocols/jabber/jabber.c @ 30881:a5131a257967
jabber: Fix a pernicious race condition in our cyrus auth code
About sasl_getsecret_t, sasl.h reads, in part:
outputs:
psecret set to password structure which must persist until
next call to getsecret **in same connection**, but middleware
will erase password data when it's done with it.
Clearly this needs to be per-JabberStream*, not a static var.
Jan Kaluza noted the static var and then I noted the sasl.h docs.
Fixes #11560
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Fri, 27 Aug 2010 04:30:23 +0000 |
parents | 6ee64d62c43c |
children | 8084631e2e84 |
rev | line source |
---|---|
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15823 | 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>
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" |
29862
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
65 #include "usermood.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
66 #include "xdata.h" |
17561
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17560
diff
changeset
|
67 #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
|
68 #include "adhoccommands.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
69 |
26014
bd598b606ca4
Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25729
diff
changeset
|
70 #include "jingle/jingle.h" |
bd598b606ca4
Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25729
diff
changeset
|
71 #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
|
72 |
29889
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29867
diff
changeset
|
73 #define PING_TIMEOUT 60 |
30184
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
74 /* Send a whitespace keepalive to the server if we haven't sent |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
75 * anything in the last 120 seconds |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
76 */ |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
77 #define DEFAULT_INACTIVITY_TIME 120 |
29889
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29867
diff
changeset
|
78 |
21538 | 79 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
|
80 GList *jabber_identities = NULL; |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
81 |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
82 static GHashTable *jabber_cmds = NULL; /* PurplePlugin * => GSList of ids */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
83 |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
84 static gint plugin_ref = 0; |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
85 |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
86 static void jabber_unregister_account_cb(JabberStream *js); |
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
|
87 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
|
88 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
89 static void jabber_stream_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 char *open_stream; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 |
30003
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
30002
diff
changeset
|
93 if (js->stream_id) { |
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
30002
diff
changeset
|
94 g_free(js->stream_id); |
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
30002
diff
changeset
|
95 js->stream_id = NULL; |
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
30002
diff
changeset
|
96 } |
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
30002
diff
changeset
|
97 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 open_stream = g_strdup_printf("<stream:stream to='%s' " |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29029
diff
changeset
|
99 "xmlns='" NS_XMPP_CLIENT "' " |
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29029
diff
changeset
|
100 "xmlns:stream='" NS_XMPP_STREAMS "' " |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
101 "version='1.0'>", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
102 js->user->domain); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
103 /* setup the parser fresh for each stream */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
104 jabber_parser_setup(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
105 jabber_send_raw(js, open_stream, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
106 js->reinit = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
107 g_free(open_stream); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
108 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
109 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
110 static void |
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
|
111 jabber_session_initialized_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
112 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
113 xmlnode *packet, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
114 { |
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
|
115 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
|
116 jabber_disco_items_server(js); |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
117 if(js->unregistration) |
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
118 jabber_unregister_account_cb(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
119 } else { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
120 purple_connection_error_reason(js->gc, |
21358 | 121 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
122 ("Error initializing session")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
124 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
126 static void jabber_session_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
127 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 xmlnode *session; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
130 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 jabber_iq_set_callback(iq, jabber_session_initialized_cb, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
132 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 session = xmlnode_new_child(iq->node, "session"); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29029
diff
changeset
|
134 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
|
135 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
136 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
137 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 |
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
|
139 static void jabber_bind_result_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
140 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
141 xmlnode *packet, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
142 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
143 xmlnode *bind; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 |
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
|
145 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
|
146 (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
|
147 xmlnode *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
148 char *full_jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
149 if((jid = xmlnode_get_child(bind, "jid")) && (full_jid = xmlnode_get_data(jid))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 jabber_id_free(js->user); |
28131
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
28125
diff
changeset
|
151 |
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
28125
diff
changeset
|
152 js->user = jabber_id_new(full_jid); |
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
28125
diff
changeset
|
153 if (js->user == NULL) { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
154 purple_connection_error_reason(js->gc, |
21358 | 155 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
156 _("Invalid response from server")); |
28131
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
28125
diff
changeset
|
157 g_free(full_jid); |
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
28125
diff
changeset
|
158 return; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
159 } |
28131
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
28125
diff
changeset
|
160 |
28132
eb2d17945ce3
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents:
28131
diff
changeset
|
161 js->user_jb = jabber_buddy_find(js, full_jid, TRUE); |
eb2d17945ce3
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents:
28131
diff
changeset
|
162 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
|
163 |
a61c017d3a99
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23988
diff
changeset
|
164 purple_connection_set_display_name(js->gc, full_jid); |
a61c017d3a99
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23988
diff
changeset
|
165 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
166 g_free(full_jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
167 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
168 } else { |
21358 | 169 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
170 char *msg = jabber_parse_error(js, packet, &reason); |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
171 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
|
172 g_free(msg); |
30146
b00abe5ec15e
jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <paul@darkrain42.org>
parents:
30107
diff
changeset
|
173 |
b00abe5ec15e
jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <paul@darkrain42.org>
parents:
30107
diff
changeset
|
174 return; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
175 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
176 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
177 jabber_session_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
179 |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
180 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
|
181 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
|
182 *dot = NULL; |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
183 |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
184 /* 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
|
185 if (input == NULL || *input == '\0') |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
186 return NULL; |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
187 |
24514
6b9552b09de0
Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
24508
diff
changeset
|
188 if (strstr(input, "__HOSTNAME__") == NULL) |
24531 | 189 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
|
190 |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
191 /* Replace __HOSTNAME__ with hostname */ |
24505
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
192 if (gethostname(hostname, sizeof(hostname) - 1)) { |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
193 purple_debug_warning("jabber", "gethostname: %s\n", g_strerror(errno)); |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
194 /* according to glibc doc, the only time an error is returned |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
195 is if the hostname is longer than the buffer, in which case |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
196 glibc 2.2+ would still fill the buffer with partial |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
197 hostname, so maybe we want to detect that and use it |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
198 instead |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
199 */ |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
200 strcpy(hostname, "localhost"); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
201 } |
24505
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
202 hostname[sizeof(hostname) - 1] = '\0'; |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
203 |
25097
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
204 /* We want only the short hostname, not the FQDN - this will prevent the |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
205 * resource string from being unreasonably long on systems which stuff the |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
206 * whole FQDN in the hostname */ |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
207 if((dot = strchr(hostname, '.'))) |
30842
7c9a4235342c
< QuLogic> on line 208 of jabber.c, should that be *dot?
Paul Aurich <paul@darkrain42.org>
parents:
30753
diff
changeset
|
208 *dot = '\0'; |
25097
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
209 |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
210 return purple_strreplace(input, "__HOSTNAME__", hostname); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
211 } |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
212 |
30276
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
213 static gboolean |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
214 jabber_process_starttls(JabberStream *js, xmlnode *packet) |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
215 { |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
216 PurpleAccount *account; |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
217 xmlnode *starttls; |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
218 |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
219 account = purple_connection_get_account(js->gc); |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
220 |
30629
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
221 if(purple_ssl_is_supported()) { |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
222 jabber_send_raw(js, |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
223 "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1); |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
224 return TRUE; |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
225 } |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
226 |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
227 starttls = xmlnode_get_child(packet, "starttls"); |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
228 if(xmlnode_get_child(starttls, "required")) { |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
229 purple_connection_error_reason(js->gc, |
30276
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
230 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
231 _("Server requires TLS/SSL, but no TLS/SSL support was found.")); |
30629
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
232 return TRUE; |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
233 } |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
234 |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
235 if(purple_account_get_bool(account, "require_tls", JABBER_DEFAULT_REQUIRE_TLS)) { |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
236 purple_connection_error_reason(js->gc, |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
237 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
30276
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
238 _("You require encryption, but no TLS/SSL support was found.")); |
30629
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30621
diff
changeset
|
239 return TRUE; |
30276
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
240 } |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
241 |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
242 return FALSE; |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
243 } |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
30275
diff
changeset
|
244 |
25607
f775f6021654
* using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25602
diff
changeset
|
245 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
|
246 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
247 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
|
248 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
|
249 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
|
250 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
|
251 } |
28891
4fd0baa32a9e
jabber: Fix a few places where the default for require_tls was wrong.
Paul Aurich <paul@darkrain42.org>
parents:
28889
diff
changeset
|
252 } 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
|
253 purple_connection_error_reason(js->gc, |
21358 | 254 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
255 _("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
|
256 return; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
257 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
258 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
259 if(js->registration) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
260 jabber_register_start(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
261 } 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
|
262 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
|
263 jabber_auth_start(js, packet); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
264 } else if(xmlnode_get_child(packet, "bind")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
265 xmlnode *bind, *resource; |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
266 char *requested_resource; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
267 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
|
268 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
|
269 xmlnode_set_namespace(bind, NS_XMPP_BIND); |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
270 requested_resource = jabber_prep_resource(js->user->resource); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
271 |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
272 if (requested_resource != NULL) { |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
273 resource = xmlnode_new_child(bind, "resource"); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
274 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
|
275 g_free(requested_resource); |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
276 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
277 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
278 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
|
279 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
280 jabber_iq_send(iq); |
29142
0f7025534fc5
jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents:
29140
diff
changeset
|
281 } 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
|
282 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
|
283 } 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
|
284 /* 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
|
285 * 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
|
286 * 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
|
287 * connecting to an XMPP server. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
288 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
|
289 jabber_auth_start_old(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
290 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
291 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
293 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
|
294 { |
21358 | 295 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
|
296 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
|
297 |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
298 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
|
299 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
300 g_free(msg); |
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 void tls_init(JabberStream *js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
304 |
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
|
305 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
|
306 { |
30002
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
307 const char *name; |
15919 | 308 const char *xmlns; |
309 | |
28893
96ba7fd24177
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents:
28891
diff
changeset
|
310 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
|
311 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
312 /* 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
|
313 if(NULL == *packet) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
314 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
315 |
30002
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
316 name = (*packet)->name; |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
317 xmlns = xmlnode_get_namespace(*packet); |
15919 | 318 |
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
|
319 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
|
320 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
|
321 } 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
|
322 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
|
323 } 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
|
324 jabber_message_parse(js, *packet); |
30002
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
325 } else if (purple_strequal(xmlns, NS_XMPP_STREAMS)) { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
326 if (g_str_equal(name, "features")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
327 jabber_stream_features_parse(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
328 else if (g_str_equal(name, "error")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
329 jabber_stream_handle_error(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
330 } else if (purple_strequal(xmlns, NS_XMPP_SASL)) { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
331 if (js->state != JABBER_STREAM_AUTHENTICATING) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
332 purple_debug_warning("jabber", "Ignoring spurious SASL stanza %s\n", name); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
333 else { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
334 if (g_str_equal(name, "challenge")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
335 jabber_auth_handle_challenge(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
336 else if (g_str_equal(name, "success")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
337 jabber_auth_handle_success(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
338 else if (g_str_equal(name, "failure")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
339 jabber_auth_handle_failure(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
340 } |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
341 } else if (purple_strequal(xmlns, NS_XMPP_TLS)) { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
342 if (js->state != JABBER_STREAM_INITIALIZING_ENCRYPTION || js->gsc) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
343 purple_debug_warning("jabber", "Ignoring spurious %s\n", name); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
344 else { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
345 if (g_str_equal(name, "proceed")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
346 tls_init(js); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
347 /* TODO: Handle <failure/>, I guess? */ |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29973
diff
changeset
|
348 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
349 } else { |
28889
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28888
diff
changeset
|
350 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
|
351 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
352 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
353 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
354 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
|
355 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
356 int ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
357 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
358 if (js->gsc) |
15823 | 359 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
|
360 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
361 ret = write(js->fd, data, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
362 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
363 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
364 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
365 |
15823 | 366 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
|
367 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
368 JabberStream *js = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
369 int ret, writelen; |
15823 | 370 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
|
371 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
372 if (writelen == 0) { |
15823 | 373 purple_input_remove(js->writeh); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
374 js->writeh = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
375 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
376 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
377 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
378 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
|
379 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
380 if (ret < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
381 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
382 else if (ret <= 0) { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
383 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
|
384 g_strerror(errno)); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
385 purple_connection_error_reason(js->gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
386 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
387 g_free(tmp); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
388 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
389 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
390 |
15823 | 391 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
|
392 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
393 |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
394 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
|
395 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
396 int ret; |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
397 gboolean success = TRUE; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
398 |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
399 g_return_val_if_fail(len > 0, FALSE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
400 |
30184
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
401 if (js->state == JABBER_STREAM_CONNECTED) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
402 jabber_stream_restart_inactivity_timer(js); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
403 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
404 if (js->writeh == 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
405 ret = jabber_do_send(js, data, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
406 else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
407 ret = -1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
408 errno = EAGAIN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
409 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
410 |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
411 if (ret < 0 && errno != EAGAIN) { |
29331
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
412 PurpleAccount *account = purple_connection_get_account(js->gc); |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
413 /* |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
414 * The server may have closed the socket (on a stream error), so if |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
415 * we're disconnecting, don't generate (possibly another) error that |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
416 * (for some UIs) would mask the first. |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
417 */ |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
418 if (!account->disconnecting) { |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
419 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"), |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
420 g_strerror(errno)); |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
421 purple_connection_error_reason(js->gc, |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
422 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
423 g_free(tmp); |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
424 } |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
29288
diff
changeset
|
425 |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
426 success = FALSE; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
427 } else if (ret < len) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
428 if (ret < 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
429 ret = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
430 if (js->writeh == 0) |
15823 | 431 js->writeh = purple_input_add( |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
432 js->gsc ? js->gsc->fd : js->fd, |
15823 | 433 PURPLE_INPUT_WRITE, jabber_send_cb, js); |
434 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
|
435 data + ret, len - ret); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
436 } |
23378
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 return success; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
439 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
440 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
441 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
|
442 { |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
443 PurpleConnection *gc; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
444 PurpleAccount *account; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
445 |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
446 gc = js->gc; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
447 account = purple_connection_get_account(gc); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
448 |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
449 /* 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
|
450 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
|
451 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
|
452 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
|
453 |
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
|
454 /* 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
|
455 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
|
456 /* 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
|
457 (((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
|
458 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
|
459 ((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
|
460 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
|
461 (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
|
462 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
|
463 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
|
464 |
25884
b9a90f34b780
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25872
diff
changeset
|
465 /* 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
|
466 * due to a plugin sending bad xml */ |
b9a90f34b780
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25872
diff
changeset
|
467 if (tag_end == NULL) |
b9a90f34b780
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25872
diff
changeset
|
468 tag_end = tag_start; |
b9a90f34b780
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25872
diff
changeset
|
469 |
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
|
470 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
|
471 |
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
|
472 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
|
473 *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
|
474 } |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
475 |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
476 username = purple_connection_get_display_name(gc); |
28888
562fd22dbe89
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents:
28811
diff
changeset
|
477 if (!username) |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
478 username = purple_account_get_username(account); |
28888
562fd22dbe89
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents:
28811
diff
changeset
|
479 |
562fd22dbe89
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents:
28811
diff
changeset
|
480 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
|
481 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
|
482 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
|
483 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
|
484 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
|
485 |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
486 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
|
487 } |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
488 |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
489 purple_signal_emit(purple_connection_get_prpl(gc), "jabber-sending-text", gc, &data); |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
490 if (data == NULL) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
491 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
492 |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
493 if (len == -1) |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
494 len = strlen(data); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
495 |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
496 /* 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
|
497 * 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
|
498 #ifdef HAVE_CYRUS_SASL |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
499 if (js->sasl_maxbuf>0) { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
500 int pos = 0; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
501 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
502 if (!js->gsc && js->fd<0) |
30273
2829dd1cc118
jabber: I don't see how this is possible, and it looks like an error to me.
Paul Aurich <paul@darkrain42.org>
parents:
30270
diff
changeset
|
503 g_return_if_reached(); |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
504 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
505 while (pos < len) { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
506 int towrite; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
507 const char *out; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
508 unsigned olen; |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
509 int rc; |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
510 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
511 towrite = MIN((len - pos), js->sasl_maxbuf); |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
512 |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
513 rc = sasl_encode(js->sasl, &data[pos], towrite, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
514 &out, &olen); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
515 if (rc != SASL_OK) { |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
516 gchar *error = |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
517 g_strdup_printf(_("SASL error: %s"), |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
518 sasl_errdetail(js->sasl)); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
519 purple_debug_error("jabber", |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
520 "sasl_encode error %d: %s\n", rc, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
521 sasl_errdetail(js->sasl)); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
522 purple_connection_error_reason(gc, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
523 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
524 error); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
525 g_free(error); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
526 return; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
527 } |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
528 pos += towrite; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
529 |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
530 /* do_jabber_send_raw returns FALSE when it throws a |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
531 * connection error. |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
532 */ |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
533 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
|
534 break; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
535 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
536 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
537 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
538 #endif |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
539 |
28125
53f0956f76dc
jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents:
28115
diff
changeset
|
540 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
|
541 jabber_bosh_connection_send_raw(js->bosh, data); |
25777
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
542 else |
25717
907ca9a36fe0
explicit merge of '714a7c7f903d11c96ffade34966121da549d998f'
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
543 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
|
544 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
545 |
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
|
546 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
|
547 { |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
548 JabberStream *js = purple_connection_get_protocol_data(gc); |
30621
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
30276
diff
changeset
|
549 |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
30276
diff
changeset
|
550 g_return_val_if_fail(js != NULL, -1); |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
30276
diff
changeset
|
551 /* TODO: It's probably worthwhile to restrict this to when the account |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
30276
diff
changeset
|
552 * state is CONNECTED, but I can /almost/ envision reasons for wanting |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
30276
diff
changeset
|
553 * to do things during the connection process. |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
30276
diff
changeset
|
554 */ |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
30276
diff
changeset
|
555 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
556 jabber_send_raw(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
557 return len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
558 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
559 |
27088
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27086
diff
changeset
|
560 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
|
561 gpointer unused) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
562 { |
27991
e8e056876e39
Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents:
27984
diff
changeset
|
563 JabberStream *js; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
564 char *txt; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
565 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
566 |
27088
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27086
diff
changeset
|
567 if (NULL == packet) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
568 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
569 |
30753
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30688
diff
changeset
|
570 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(pc)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
571 |
27991
e8e056876e39
Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents:
27984
diff
changeset
|
572 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
|
573 |
7622d3f86752
Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents:
28971
diff
changeset
|
574 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
|
575 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
|
576 |
28125
53f0956f76dc
jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents:
28115
diff
changeset
|
577 if (js->bosh) |
27991
e8e056876e39
Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents:
27984
diff
changeset
|
578 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
|
579 g_str_equal((*packet)->name, "iq") || |
e8e056876e39
Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents:
27984
diff
changeset
|
580 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
|
581 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
|
582 txt = xmlnode_to_str(*packet, &len); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
583 jabber_send_raw(js, txt, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
584 g_free(txt); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
585 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
586 |
27088
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27086
diff
changeset
|
587 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
|
588 { |
28893
96ba7fd24177
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents:
28891
diff
changeset
|
589 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
|
590 } |
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
|
591 |
25925
42dd7e591031
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents:
25050
diff
changeset
|
592 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
|
593 { |
21973
966f98d4b04b
Masca noticed that dc6923294f5f33ff7a52a998e1b9e9ad47be0211 made jabber.c not
Will Thompson <will.thompson@collabora.co.uk>
parents:
21964
diff
changeset
|
594 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
|
595 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
|
596 _("Ping timed out")); |
27151
08f5c5b12e7c
The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
597 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
|
598 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
|
599 } |
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
|
600 |
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
|
601 void jabber_keepalive(PurpleConnection *gc) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
602 { |
29889
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29867
diff
changeset
|
603 JabberStream *js = purple_connection_get_protocol_data(gc); |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29867
diff
changeset
|
604 time_t now = time(NULL); |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29867
diff
changeset
|
605 |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29867
diff
changeset
|
606 if (js->keepalive_timeout == 0 && (now - js->last_ping) >= PING_TIMEOUT) { |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29867
diff
changeset
|
607 js->last_ping = now; |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29867
diff
changeset
|
608 |
26999
6b0e150f2276
Stop trying to be clever with XMPP keepalive pings.
Paul Aurich <paul@darkrain42.org>
parents:
26956
diff
changeset
|
609 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
|
610 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
|
611 (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
|
612 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
613 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
614 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
615 static void |
15823 | 616 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc, |
617 PurpleInputCondition cond) | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
618 { |
15823 | 619 PurpleConnection *gc = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
620 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
621 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
622 static char buf[4096]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
623 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
624 /* TODO: It should be possible to make this check unnecessary */ |
15823 | 625 if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
626 purple_ssl_close(gsc); | |
30753
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30688
diff
changeset
|
627 g_return_if_reached(); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
628 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
629 |
15823 | 630 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
|
631 gc->last_received = time(NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
632 buf[len] = '\0'; |
28889
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28888
diff
changeset
|
633 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
|
634 jabber_parser_process(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
635 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
636 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
637 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
638 |
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
|
639 if(len < 0 && errno == EAGAIN) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
640 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
|
641 else { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
642 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
|
643 if (len == 0) |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
644 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
|
645 else |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
646 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
|
647 g_strerror(errno)); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
648 purple_connection_error_reason(js->gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
649 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
650 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
|
651 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
652 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
653 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
654 static void |
15823 | 655 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
|
656 { |
15823 | 657 PurpleConnection *gc = data; |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
658 JabberStream *js = purple_connection_get_protocol_data(gc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
659 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
660 static char buf[4096]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
661 |
30753
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30688
diff
changeset
|
662 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
663 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
664 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
|
665 gc->last_received = time(NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
666 #ifdef HAVE_CYRUS_SASL |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
667 if (js->sasl_maxbuf > 0) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
668 const char *out; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
669 unsigned int olen; |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
670 int rc; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
671 |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
672 rc = sasl_decode(js->sasl, buf, len, &out, &olen); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
673 if (rc != SASL_OK) { |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
674 gchar *error = |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
675 g_strdup_printf(_("SASL error: %s"), |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
676 sasl_errdetail(js->sasl)); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
677 purple_debug_error("jabber", |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
678 "sasl_decode_error %d: %s\n", rc, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
679 sasl_errdetail(js->sasl)); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
680 purple_connection_error_reason(gc, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
681 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
682 error); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
683 } else if (olen > 0) { |
28889
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28888
diff
changeset
|
684 purple_debug_info("jabber", "RecvSASL (%u): %s\n", olen, out); |
30275
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
685 jabber_parser_process(js, out, olen); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
30273
diff
changeset
|
686 if (js->reinit) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
687 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
688 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
689 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
690 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
691 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
692 buf[len] = '\0'; |
28889
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28888
diff
changeset
|
693 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
|
694 jabber_parser_process(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
695 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
696 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
|
697 } else if(len < 0 && errno == EAGAIN) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
698 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
699 } else { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
700 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
|
701 if (len == 0) |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
702 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
|
703 else |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
704 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
|
705 g_strerror(errno)); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
706 purple_connection_error_reason(js->gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
707 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
708 g_free(tmp); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
709 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
710 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
711 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
712 static void |
15823 | 713 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc, |
714 PurpleInputCondition cond) | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
715 { |
15823 | 716 PurpleConnection *gc = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
717 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
718 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
719 /* TODO: It should be possible to make this check unnecessary */ |
15823 | 720 if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
721 purple_ssl_close(gsc); | |
30753
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30688
diff
changeset
|
722 g_return_if_reached(); |
19999
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19722
diff
changeset
|
723 } |
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 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
726 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
727 if(js->state == JABBER_STREAM_CONNECTING) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
728 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
|
729 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
15823 | 730 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
|
731 |
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
|
732 /* 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
|
733 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
|
734 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
735 |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
736 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
|
737 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
|
738 { |
25776
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25775
diff
changeset
|
739 JabberStream *js = data; |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
740 |
25775
1516525c86fa
Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents:
25774
diff
changeset
|
741 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
|
742 |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
743 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
|
744 purple_debug_warning("jabber", "Unable to find alternative XMPP connection " |
29287
ddad759dc05b
jabber: Newline at the end of this message.
Paul Aurich <paul@darkrain42.org>
parents:
29184
diff
changeset
|
745 "methods after failing to connect directly.\n"); |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
746 purple_connection_error_reason(js->gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
747 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
|
748 _("Unable to connect")); |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
749 return; |
25596
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
750 } |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
751 |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
752 while (responses) { |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
753 PurpleTxtResponse *resp = responses->data; |
25597
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
754 gchar **token; |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
755 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
|
756 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
|
757 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
|
758 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
|
759 g_strfreev(token); |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
760 break; |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
761 } |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
762 g_strfreev(token); |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
763 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
|
764 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
|
765 } |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
766 |
25776
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25775
diff
changeset
|
767 if (js->bosh) { |
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25775
diff
changeset
|
768 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
|
769 } else { |
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25597
diff
changeset
|
770 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
|
771 } |
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
|
772 |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
773 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
|
774 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
|
775 g_list_free(responses); |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
776 } |
25596
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
777 } |
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 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
780 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
|
781 { |
15823 | 782 PurpleConnection *gc = data; |
29288
4189f9e1627b
jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents:
29287
diff
changeset
|
783 JabberStream *js = purple_connection_get_protocol_data(gc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
784 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
785 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
|
786 if (js->srv_rec != NULL) { |
29288
4189f9e1627b
jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents:
29287
diff
changeset
|
787 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record or connecting directly.\n", error); |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
788 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
|
789 } else { |
29288
4189f9e1627b
jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents:
29287
diff
changeset
|
790 purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain); |
27684
6f455daf3776
ASCII-ize the TXT query, too.
Paul Aurich <paul@darkrain42.org>
parents:
27683
diff
changeset
|
791 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
|
792 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
|
793 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
794 return; |
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 |
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
|
797 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
|
798 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
|
799 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
800 js->fd = source; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
801 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
802 if(js->state == JABBER_STREAM_CONNECTING) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
803 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
|
804 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
805 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
15823 | 806 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
|
807 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
808 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
809 static void |
15823 | 810 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
|
811 gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
812 { |
15823 | 813 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
|
814 JabberStream *js; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
815 |
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
|
816 /* If the connection is already disconnected, we don't need to do anything else */ |
30753
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30688
diff
changeset
|
817 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); |
15607
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15498
diff
changeset
|
818 |
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
|
819 js = gc->proto_data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
820 js->gsc = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
821 |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
822 purple_connection_ssl_error (gc, error); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
823 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
824 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
825 static void tls_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
826 { |
15823 | 827 purple_input_remove(js->gc->inpa); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
828 js->gc->inpa = 0; |
18929
67cb28c0ec89
applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18163
diff
changeset
|
829 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
|
830 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
|
831 /* 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
|
832 js->fd = -1; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
833 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
834 |
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
|
835 static gboolean jabber_login_connect(JabberStream *js, const char *domain, const char *host, int port, |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
836 gboolean fatal_failure) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
837 { |
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
|
838 /* 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
|
839 * 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
|
840 * but we use domain as fallback for when users enter IP address |
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
841 * 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
|
842 g_free(js->serverFQDN); |
22327
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
843 if (purple_ip_address_is_valid(host)) |
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
844 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
|
845 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
|
846 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
|
847 |
27689
5f17bfa9dc70
To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents:
27684
diff
changeset
|
848 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
|
849 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
|
850 if (fatal_failure) { |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
851 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
|
852 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
27463
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27431
diff
changeset
|
853 _("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
|
854 } |
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
|
855 |
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
|
856 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
|
857 } |
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
|
858 |
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
|
859 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
|
860 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
861 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
862 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
|
863 { |
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
|
864 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
|
865 PurpleSrvResponse *tmp_resp = js->srv_rec + (js->srv_rec_idx++); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
866 if (jabber_login_connect(js, tmp_resp->hostname, tmp_resp->hostname, tmp_resp->port, FALSE)) |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
867 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
|
868 } |
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
|
869 |
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
|
870 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
|
871 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
|
872 |
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
|
873 /* Fall back to the defaults (I'm not sure if we should actually do this) */ |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
874 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
|
875 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
|
876 TRUE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
877 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
878 |
15823 | 879 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
|
880 { |
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
|
881 JabberStream *js = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
882 js->srv_query_data = NULL; |
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 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
|
885 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
|
886 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
|
887 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
|
888 try_srv_connect(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
889 } else { |
17007 | 890 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
|
891 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
|
892 TRUE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
893 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
894 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
895 |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
896 static JabberStream * |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
897 jabber_stream_new(PurpleAccount *account) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
898 { |
15823 | 899 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
|
900 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
|
901 PurplePresence *presence; |
27683
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27675
diff
changeset
|
902 gchar *user; |
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27675
diff
changeset
|
903 gchar *slash; |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
904 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
905 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
|
906 js->gc = gc; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
907 js->fd = -1; |
27683
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27675
diff
changeset
|
908 |
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27675
diff
changeset
|
909 user = g_strdup(purple_account_get_username(account)); |
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27675
diff
changeset
|
910 /* 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
|
911 slash = strchr(user, '/'); |
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27675
diff
changeset
|
912 if (slash && *(slash + 1) == '\0') |
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27675
diff
changeset
|
913 *slash = '\0'; |
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27675
diff
changeset
|
914 js->user = jabber_id_new(user); |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
915 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
916 if (!js->user) { |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
917 purple_connection_error_reason(gc, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
918 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
919 _("Invalid XMPP ID")); |
30166 | 920 g_free(user); |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
921 /* Destroying the connection will free the JabberStream */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
922 return NULL; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
923 } |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
924 |
30107
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
30031
diff
changeset
|
925 if (!js->user->node || *(js->user->node) == '\0') { |
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
30031
diff
changeset
|
926 purple_connection_error_reason(gc, |
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
30031
diff
changeset
|
927 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
30031
diff
changeset
|
928 _("Invalid XMPP ID. Username portion must be set.")); |
30166 | 929 g_free(user); |
30107
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
30031
diff
changeset
|
930 /* Destroying the connection will free the JabberStream */ |
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
30031
diff
changeset
|
931 return NULL; |
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
30031
diff
changeset
|
932 } |
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
30031
diff
changeset
|
933 |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
934 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
|
935 purple_connection_error_reason(gc, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
936 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
937 _("Invalid XMPP ID. Domain must be set.")); |
30166 | 938 g_free(user); |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
939 /* Destroying the connection will free the JabberStream */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
940 return NULL; |
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 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
943 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
|
944 g_free, (GDestroyNotify)jabber_buddy_free); |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
945 |
28132
eb2d17945ce3
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents:
28131
diff
changeset
|
946 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
|
947 g_free(user); |
28132
eb2d17945ce3
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents:
28131
diff
changeset
|
948 if (!js->user_jb) { |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
949 /* 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
|
950 purple_connection_error_reason(gc, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
951 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
952 _("Invalid XMPP ID")); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
953 /* Destroying the connection will free the JabberStream */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
954 g_return_val_if_reached(NULL); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
955 } |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
956 |
28132
eb2d17945ce3
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents:
28131
diff
changeset
|
957 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
|
958 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
959 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
|
960 g_free, g_free); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
961 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
|
962 g_free, (GDestroyNotify)jabber_chat_free); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
963 js->next_id = g_random_int(); |
15823 | 964 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
|
965 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
|
966 js->keepalive_timeout = 0; |
30184
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
967 js->max_inactivity = DEFAULT_INACTIVITY_TIME; |
25995
6d7d360687bd
Jabber: Default protocol version to 1.0.
Paul Aurich <paul@darkrain42.org>
parents:
25989
diff
changeset
|
968 /* Set the default protocol version to 1.0. Overridden in parser.c. */ |
29961
618c4165d4f8
jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents:
29960
diff
changeset
|
969 js->protocol_version.major = 1; |
618c4165d4f8
jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents:
29960
diff
changeset
|
970 js->protocol_version.minor = 0; |
25648
16543025aed1
Moved jingle.c global variable "sessions" into JabberStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25647
diff
changeset
|
971 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
|
972 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
|
973 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
|
974 js->stun_query = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
975 |
25962
a92df60855f3
Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents:
25956
diff
changeset
|
976 /* 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
|
977 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
|
978 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
|
979 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
|
980 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
|
981 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
|
982 |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
983 return js; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
984 } |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
985 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
986 static void |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
987 jabber_stream_connect(JabberStream *js) |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
988 { |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
989 PurpleConnection *gc = js->gc; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
990 PurpleAccount *account = purple_connection_get_account(gc); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
991 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
|
992 "connect_server", ""); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
993 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
|
994 "bosh_url", ""); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
995 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
996 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
|
997 |
27255
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27219
diff
changeset
|
998 /* 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
|
999 * attached to that choice, though. |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27219
diff
changeset
|
1000 */ |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27219
diff
changeset
|
1001 if (*bosh_url) { |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27219
diff
changeset
|
1002 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
|
1003 if (js->bosh) |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27219
diff
changeset
|
1004 jabber_bosh_connection_connect(js->bosh); |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27219
diff
changeset
|
1005 else { |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1006 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
|
1007 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
27255
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27219
diff
changeset
|
1008 _("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
|
1009 } |
27255
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27219
diff
changeset
|
1010 |
25774
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25772
diff
changeset
|
1011 return; |
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25772
diff
changeset
|
1012 } |
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25772
diff
changeset
|
1013 |
27255
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27219
diff
changeset
|
1014 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
|
1015 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1016 /* 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
|
1017 if(purple_account_get_bool(account, "old_ssl", FALSE)) { |
15823 | 1018 if(purple_ssl_is_supported()) { |
27711
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27689
diff
changeset
|
1019 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
|
1020 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
|
1021 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
|
1022 if (!js->gsc) { |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1023 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
|
1024 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
|
1025 _("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
|
1026 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1027 } else { |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1028 purple_connection_error_reason(gc, |
21358 | 1029 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
1030 _("SSL support unavailable")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1031 } |
25835
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25834
diff
changeset
|
1032 |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25834
diff
changeset
|
1033 return; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1034 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1035 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1036 /* 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
|
1037 * 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>
diff
changeset
|
1038 if(connect_server[0]) { |
27711
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27689
diff
changeset
|
1039 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
|
1040 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
|
1041 } else { |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25834
diff
changeset
|
1042 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
|
1043 "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
|
1044 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1045 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1046 |
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
|
1047 void |
15823 | 1048 jabber_login(PurpleAccount *account) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1049 { |
15823 | 1050 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
|
1051 JabberStream *js; |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1052 PurpleStoredImage *image; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1053 |
23445
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23182
diff
changeset
|
1054 gc->flags |= PURPLE_CONNECTION_HTML | |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23182
diff
changeset
|
1055 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY; |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1056 js = jabber_stream_new(account); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1057 if (js == NULL) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1058 return; |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1059 |
29439
031fd1cd88df
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents:
29414
diff
changeset
|
1060 /* TODO: Remove this at some point. Added 2010-02-14 (v2.6.6) */ |
031fd1cd88df
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents:
29414
diff
changeset
|
1061 if (g_str_equal("proxy.jabber.org", purple_account_get_string(account, "ft_proxies", ""))) |
031fd1cd88df
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents:
29414
diff
changeset
|
1062 purple_account_set_string(account, "ft_proxies", JABBER_DEFAULT_FT_PROXIES); |
031fd1cd88df
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents:
29414
diff
changeset
|
1063 |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1064 /* |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1065 * 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
|
1066 * 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
|
1067 * server. |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1068 */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1069 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
|
1070 if (image != NULL) { |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1071 js->initial_avatar_hash = |
30031
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
30003
diff
changeset
|
1072 jabber_calculate_data_hash(purple_imgstore_get_data(image), |
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
30003
diff
changeset
|
1073 purple_imgstore_get_size(image), "sha1"); |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1074 purple_imgstore_unref(image); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1075 } |
26162
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1076 |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1077 jabber_stream_connect(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1078 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1079 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1080 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1081 static gboolean |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1082 conn_close_cb(gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1083 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1084 JabberStream *js = data; |
15823 | 1085 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
|
1086 |
17603
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17599
diff
changeset
|
1087 jabber_parser_free(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1088 |
15823 | 1089 purple_account_disconnect(account); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1090 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1091 return FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1092 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1093 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1094 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1095 jabber_connection_schedule_close(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1096 { |
15823 | 1097 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
|
1098 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1099 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1100 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
|
1101 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
|
1102 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
|
1103 xmlnode *packet, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1104 { |
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
|
1105 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
|
1106 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
|
1107 char *to = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1108 |
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
|
1109 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
|
1110 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
|
1111 buf = g_strdup_printf(_("Registration of %s@%s successful"), |
27413
46cc3674b13c
Indentation fix.
Etan Reisner <pidgin@unreliablesource.net>
parents:
27151
diff
changeset
|
1112 js->user->node, js->user->domain); |
17608
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
1113 if(account->registration_cb) |
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
1114 (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
|
1115 } 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
|
1116 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
|
1117 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
|
1118 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
|
1119 } |
15823 | 1120 purple_notify_info(NULL, _("Registration Successful"), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1121 _("Registration Successful"), buf); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1122 g_free(buf); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1123 } 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
|
1124 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
|
1125 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1126 if(!msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1127 msg = g_strdup(_("Unknown Error")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1128 |
15823 | 1129 purple_notify_error(NULL, _("Registration Failed"), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1130 _("Registration Failed"), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1131 g_free(msg); |
17608
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
1132 if(account->registration_cb) |
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
1133 (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
|
1134 } |
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
|
1135 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
|
1136 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
|
1137 jabber_connection_schedule_close(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1138 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1139 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1140 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
|
1141 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
|
1142 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
|
1143 xmlnode *packet, gpointer data) |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1144 { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1145 char *buf; |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1146 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
|
1147 |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
1148 /* 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
|
1149 * 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
|
1150 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
|
1151 |
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
|
1152 if (type == JABBER_IQ_RESULT) { |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1153 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
|
1154 to); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1155 purple_notify_info(NULL, _("Unregistration Successful"), |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1156 _("Unregistration Successful"), buf); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1157 g_free(buf); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1158 } 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
|
1159 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
|
1160 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1161 if(!msg) |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1162 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
|
1163 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1164 purple_notify_error(NULL, _("Unregistration Failed"), |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1165 _("Unregistration Failed"), msg); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1166 g_free(msg); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1167 } |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1168 g_free(to); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1169 } |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1170 |
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
|
1171 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
|
1172 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
|
1173 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
|
1174 } 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
|
1175 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1176 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
|
1177 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
|
1178 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1179 GList *groups, *flds; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1180 xmlnode *query, *y; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1181 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1182 char *username; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1183 |
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
|
1184 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
|
1185 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
|
1186 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
|
1187 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
|
1188 |
15823 | 1189 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
|
1190 groups = groups->next) { |
15823 | 1191 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
|
1192 flds; flds = flds->next) { |
15823 | 1193 PurpleRequestField *field = flds->data; |
1194 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
|
1195 if(!strcmp(id,"unregister")) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1196 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
|
1197 if(value) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1198 /* 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
|
1199 (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
|
1200 jabber_iq_free(iq); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1201 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
|
1202 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
|
1203 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
|
1204 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
|
1205 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
|
1206 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1207 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
|
1208 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1209 jabber_iq_send(iq); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1210 g_free(cbdata); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1211 return; |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1212 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1213 } else { |
28729
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28694
diff
changeset
|
1214 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
|
1215 "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
|
1216 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
|
1217 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
|
1218 int i; |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28694
diff
changeset
|
1219 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
|
1220 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
|
1221 break; |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28694
diff
changeset
|
1222 } |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28694
diff
changeset
|
1223 |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28694
diff
changeset
|
1224 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
|
1225 continue; |
28729
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28694
diff
changeset
|
1226 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
|
1227 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
|
1228 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
|
1229 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
|
1230 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
|
1231 } |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1232 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
|
1233 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
|
1234 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1235 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1236 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1237 |
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
|
1238 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
|
1239 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
|
1240 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
|
1241 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
|
1242 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
|
1243 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
|
1244 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1245 |
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
|
1246 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
|
1247 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1248 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
|
1249 g_free(cbdata); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1250 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1251 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1252 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
|
1253 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
|
1254 { |
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
|
1255 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
|
1256 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
|
1257 if(account->registration_cb) |
17608
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
1258 (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
|
1259 jabber_connection_schedule_close(cbdata->js); |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1260 } |
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
|
1261 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
|
1262 g_free(cbdata); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1263 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1264 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1265 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
|
1266 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1267 xmlnode *query; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1268 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
|
1269 char *to = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1270 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1271 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
|
1272 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
|
1273 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
|
1274 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
|
1275 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1276 xmlnode_insert_child(query, result); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1277 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1278 jabber_iq_set_callback(iq, jabber_registration_result_cb, to); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1279 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1280 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1281 |
26694
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1282 static const struct { |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1283 const char *name; |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1284 const char *label; |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1285 } registration_fields[] = { |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1286 { "email", N_("Email") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1287 { "nick", N_("Nickname") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1288 { "first", N_("First name") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1289 { "last", N_("Last name") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1290 { "address", N_("Address") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1291 { "city", N_("City") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1292 { "state", N_("State") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1293 { "zip", N_("Postal code") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1294 { "phone", N_("Phone") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1295 { "url", N_("URL") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1296 { "date", N_("Date") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1297 { NULL, NULL } |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1298 }; |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1299 |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25930
diff
changeset
|
1300 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
|
1301 const char *id, xmlnode *query) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1302 { |
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
|
1303 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
|
1304 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
|
1305 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
|
1306 PurpleRequestField *field; |
26697
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26694
diff
changeset
|
1307 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
|
1308 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
|
1309 JabberRegisterCBData *cbdata; |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1310 gboolean registered = FALSE; |
26694
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1311 int i; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1312 |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25930
diff
changeset
|
1313 if (type != JABBER_IQ_RESULT) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1314 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1315 |
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
|
1316 if(js->registration) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1317 /* get rid of the login thingy */ |
15823 | 1318 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
|
1319 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1320 |
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
|
1321 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
|
1322 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
|
1323 |
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
|
1324 if(js->registration) { |
15823 | 1325 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
|
1326 _("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
|
1327 if(account->registration_cb) |
17608
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
1328 (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
|
1329 jabber_connection_schedule_close(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1330 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1331 } |
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
|
1332 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
1333 |
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
|
1334 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
|
1335 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
|
1336 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
|
1337 |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29029
diff
changeset
|
1338 } 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
|
1339 xmlnode *url; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1340 |
21326
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1341 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
|
1342 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
|
1343 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
|
1344 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
|
1345 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
|
1346 |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1347 if(js->registration) { |
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
|
1348 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
|
1349 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
|
1350 (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
|
1351 jabber_connection_schedule_close(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1352 } |
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
|
1353 return; |
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 } |
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
|
1356 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1357 |
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
|
1358 /* 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
|
1359 |
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
|
1360 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
|
1361 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
|
1362 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
|
1363 |
26697
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26694
diff
changeset
|
1364 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
|
1365 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
|
1366 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
|
1367 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
|
1368 else |
26697
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26694
diff
changeset
|
1369 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
|
1370 |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25985
diff
changeset
|
1371 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
|
1372 g_free(data); |
26329
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25985
diff
changeset
|
1373 } |
26697
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26694
diff
changeset
|
1374 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
|
1375 if(js->registration) |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25985
diff
changeset
|
1376 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
|
1377 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
|
1378 else { |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26694
diff
changeset
|
1379 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
|
1380 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
|
1381 g_free(data); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26694
diff
changeset
|
1382 } |
26329
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25985
diff
changeset
|
1383 |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25985
diff
changeset
|
1384 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
|
1385 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
|
1386 } |
26694
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1387 |
26697
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26694
diff
changeset
|
1388 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
|
1389 if(js->registration) |
15823 | 1390 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
|
1391 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
|
1392 else { |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26694
diff
changeset
|
1393 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
|
1394 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
|
1395 g_free(data); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26694
diff
changeset
|
1396 } |
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
|
1397 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
|
1398 } |
26694
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1399 |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1400 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
|
1401 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
|
1402 char *data = xmlnode_get_data(node); |
26694
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1403 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
|
1404 _(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
|
1405 data, FALSE); |
26694
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1406 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
|
1407 g_free(data); |
26694
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1408 } |
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
|
1409 } |
26694
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26692
diff
changeset
|
1410 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1411 if(registered) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1412 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
|
1413 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
|
1414 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1415 |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1416 if((y = xmlnode_get_child(query, "instructions"))) |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1417 instructions = xmlnode_get_data(y); |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1418 else if(registered) |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1419 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
|
1420 "to change your account registration.")); |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1421 else |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1422 instructions = g_strdup(_("Please fill out the information below " |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1423 "to register your new account.")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1424 |
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
|
1425 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
|
1426 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
|
1427 cbdata->who = g_strdup(from); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1428 |
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
|
1429 if(js->registration) |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1430 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
|
1431 _("Register New XMPP Account"), instructions, fields, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1432 _("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
|
1433 _("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
|
1434 purple_connection_get_account(js->gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1435 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
|
1436 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
|
1437 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
|
1438 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
|
1439 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
|
1440 :g_strdup_printf(_("Register New Account at %s"), from); |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1441 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
|
1442 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
|
1443 (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
|
1444 _("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
|
1445 purple_connection_get_account(js->gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1446 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
|
1447 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
|
1448 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1449 |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1450 g_free(instructions); |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1451 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1452 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1453 void jabber_register_start(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1454 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1455 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1456 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1457 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
|
1458 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1459 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1460 |
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
|
1461 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
|
1462 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
|
1463 |
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
|
1464 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
|
1465 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
|
1466 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
|
1467 } |
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
|
1468 |
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
|
1469 void jabber_register_account(PurpleAccount *account) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1470 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1471 JabberStream *js; |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1472 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1473 js = jabber_stream_new(account); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1474 if (js == NULL) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1475 return; |
27675
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1476 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1477 js->registration = TRUE; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27603
diff
changeset
|
1478 jabber_stream_connect(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1479 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1480 |
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
|
1481 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
|
1482 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
|
1483 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
|
1484 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
|
1485 { |
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
|
1486 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
|
1487 |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1488 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
|
1489 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
|
1490 |
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
|
1491 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
|
1492 _("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
|
1493 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
|
1494 if(js->unregistration_cb) |
18921
ba3b22cd280b
Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18920
diff
changeset
|
1495 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
|
1496 } 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
|
1497 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
|
1498 _("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
|
1499 if(js->unregistration_cb) |
18921
ba3b22cd280b
Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18920
diff
changeset
|
1500 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
|
1501 } |
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
|
1502 } |
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
|
1503 |
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
|
1504 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
|
1505 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
|
1506 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
|
1507 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1508 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
|
1509 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1510 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
|
1511 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1512 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
|
1513 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1514 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
|
1515 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
|
1516 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1517 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
|
1518 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
|
1519 } |
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
|
1520 |
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
|
1521 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
|
1522 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
|
1523 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
|
1524 |
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
|
1525 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
|
1526 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
|
1527 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
|
1528 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
|
1529 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
|
1530 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
|
1531 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
|
1532 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
|
1533 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
1534 |
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
|
1535 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
|
1536 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1537 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
|
1538 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
|
1539 return; |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1540 } |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1541 |
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
|
1542 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
|
1543 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
|
1544 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
|
1545 |
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
|
1546 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
|
1547 } |
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
1548 |
25872
3b674151cd60
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25871
diff
changeset
|
1549 /* 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
|
1550 * 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
|
1551 * 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
|
1552 * 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
|
1553 */ |
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
|
1554 void jabber_close(PurpleConnection *gc) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1555 { |
29333
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
29332
diff
changeset
|
1556 JabberStream *js = purple_connection_get_protocol_data(gc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1557 |
25667
41d6d4217d21
Further decoupled Jingle code from jabber.c:
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25666
diff
changeset
|
1558 /* 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
|
1559 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
|
1560 |
29333
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
29332
diff
changeset
|
1561 if (js->bosh) |
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
29332
diff
changeset
|
1562 jabber_bosh_connection_close(js->bosh); |
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
29332
diff
changeset
|
1563 else if ((js->gsc && js->gsc->fd > 0) || js->fd > 0) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1564 jabber_send_raw(js, "</stream:stream>", -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1565 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1566 if (js->srv_query_data) |
15823 | 1567 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
|
1568 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1569 if(js->gsc) { |
29333
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
29332
diff
changeset
|
1570 purple_ssl_close(js->gsc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1571 } else if (js->fd > 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1572 if(js->gc->inpa) |
15823 | 1573 purple_input_remove(js->gc->inpa); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1574 close(js->fd); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1575 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1576 |
25777
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1577 if (js->bosh) |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1578 jabber_bosh_connection_destroy(js->bosh); |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1579 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1580 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
|
1581 |
17603
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17599
diff
changeset
|
1582 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
|
1583 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1584 if(js->iq_callbacks) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1585 g_hash_table_destroy(js->iq_callbacks); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1586 if(js->buddies) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1587 g_hash_table_destroy(js->buddies); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1588 if(js->chats) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1589 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
|
1590 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1591 while(js->chat_servers) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1592 g_free(js->chat_servers->data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1593 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
|
1594 } |
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
|
1595 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1596 while(js->user_directories) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1597 g_free(js->user_directories->data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1598 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
|
1599 } |
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
|
1600 |
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
|
1601 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
|
1602 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
|
1603 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
|
1604 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
|
1605 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
|
1606 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
|
1607 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
|
1608 } |
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
|
1609 |
23744
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23644
diff
changeset
|
1610 while(js->url_datas) { |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23644
diff
changeset
|
1611 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
|
1612 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
|
1613 } |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23644
diff
changeset
|
1614 |
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
|
1615 g_free(js->stream_id); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1616 if(js->user) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1617 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
|
1618 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
|
1619 g_free(js->avatar_hash); |
25742
4040da08a733
Entity Capabilities must be per-JabberStream
Paul Aurich <paul@darkrain42.org>
parents:
25741
diff
changeset
|
1620 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
|
1621 |
30158
0f895633faeb
jabber: Stifle an assertion warning.
Paul Aurich <paul@darkrain42.org>
parents:
30146
diff
changeset
|
1622 if (js->write_buffer) |
0f895633faeb
jabber: Stifle an assertion warning.
Paul Aurich <paul@darkrain42.org>
parents:
30146
diff
changeset
|
1623 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
|
1624 if(js->writeh) |
15823 | 1625 purple_input_remove(js->writeh); |
29089
c1d41b7484ff
jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents:
29078
diff
changeset
|
1626 if (js->auth_mech && js->auth_mech->dispose) |
c1d41b7484ff
jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents:
29078
diff
changeset
|
1627 js->auth_mech->dispose(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1628 #ifdef HAVE_CYRUS_SASL |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1629 if(js->sasl) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1630 sasl_dispose(&js->sasl); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1631 if(js->sasl_mechs) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1632 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
|
1633 g_free(js->sasl_cb); |
30881
a5131a257967
jabber: Fix a pernicious race condition in our cyrus auth code
Paul Aurich <paul@darkrain42.org>
parents:
30849
diff
changeset
|
1634 /* Note: _not_ g_free. See auth_cyrus.c:jabber_sasl_cb_secret */ |
a5131a257967
jabber: Fix a pernicious race condition in our cyrus auth code
Paul Aurich <paul@darkrain42.org>
parents:
30849
diff
changeset
|
1635 free(js->sasl_secret); |
18929
67cb28c0ec89
applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18163
diff
changeset
|
1636 #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
|
1637 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
|
1638 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
|
1639 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
|
1640 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
|
1641 g_free(cmd->node); |
17620
11dd7969dd4b
Fixed copy/paste error.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17617
diff
changeset
|
1642 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
|
1643 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
|
1644 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
|
1645 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1646 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
|
1647 g_free(js->certificate_CN); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1648 g_free(js->gmail_last_time); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1649 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
|
1650 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
|
1651 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
|
1652 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
|
1653 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
|
1654 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
|
1655 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
|
1656 g_free(js->old_track); |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21592
diff
changeset
|
1657 |
28112
1ea1aee71848
jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents:
27991
diff
changeset
|
1658 if (js->vcard_timer != 0) |
1ea1aee71848
jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents:
27991
diff
changeset
|
1659 purple_timeout_remove(js->vcard_timer); |
1ea1aee71848
jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents:
27991
diff
changeset
|
1660 |
27151
08f5c5b12e7c
The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1661 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
|
1662 purple_timeout_remove(js->keepalive_timeout); |
30184
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
1663 if (js->inactivity_timer != 0) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
1664 purple_timeout_remove(js->inactivity_timer); |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
1665 |
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
|
1666 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
|
1667 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
|
1668 |
26162
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1669 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
|
1670 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
|
1671 |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1672 /* 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
|
1673 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
|
1674 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
|
1675 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
|
1676 } |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
1677 |
23644
fa8567fa0ca0
Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23643
diff
changeset
|
1678 g_free(js); |
fa8567fa0ca0
Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23643
diff
changeset
|
1679 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1680 gc->proto_data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1681 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1682 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1683 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
|
1684 { |
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
|
1685 #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
|
1686 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1687 js->state = state; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1688 switch(state) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1689 case JABBER_STREAM_OFFLINE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1690 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1691 case JABBER_STREAM_CONNECTING: |
15823 | 1692 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
|
1693 JABBER_CONNECT_STEPS); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1694 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1695 case JABBER_STREAM_INITIALIZING: |
15823 | 1696 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
|
1697 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1698 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1699 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
|
1700 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
|
1701 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
|
1702 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
|
1703 break; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1704 case JABBER_STREAM_AUTHENTICATING: |
15823 | 1705 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
|
1706 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
|
1707 break; |
28447
b357216b7b79
jabber: Fix using BOSH and legacy auth together. Closes #9990.
Paul Aurich <paul@darkrain42.org>
parents:
28398
diff
changeset
|
1708 case JABBER_STREAM_POST_AUTH: |
15823 | 1709 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
|
1710 (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
|
1711 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1712 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1713 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
|
1714 /* Send initial presence */ |
c8390dc125c1
Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents:
27096
diff
changeset
|
1715 jabber_presence_send(js, TRUE); |
30184
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
1716 /* Start up the inactivity timer */ |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
1717 jabber_stream_restart_inactivity_timer(js); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
1718 |
15823 | 1719 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
|
1720 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1721 } |
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
|
1722 |
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
|
1723 #undef JABBER_CONNECT_STEPS |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1724 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1725 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1726 char *jabber_get_next_id(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1727 { |
15823 | 1728 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
|
1729 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1730 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1731 |
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
|
1732 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
|
1733 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1734 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1735 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1736 js->idle = idle ? time(NULL) - idle : idle; |
26787
fef989505ea2
propagate from branch 'im.pidgin.pidgin' (head 7281ad5ba8e68debd285e06dafebd991e980f3da)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1737 |
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
|
1738 /* 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
|
1739 purple_debug_info("jabber", "sending updated presence for idle\n"); |
26818 | 1740 jabber_presence_send(js, FALSE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1741 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1742 |
27033
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1743 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
|
1744 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
|
1745 xmlnode *child) |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1746 { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1747 JabberIq *result; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1748 xmlnode *item; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1749 PurpleAccount *account; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1750 gboolean is_block; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1751 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1752 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
|
1753 xmlnode *error, *x; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1754 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
|
1755 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
|
1756 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
|
1757 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
|
1758 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1759 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
|
1760 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
|
1761 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
|
1762 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
|
1763 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1764 jabber_iq_send(result); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1765 return; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1766 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1767 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1768 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
|
1769 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
|
1770 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1771 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
|
1772 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
|
1773 /* Unblock everyone */ |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1774 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
|
1775 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1776 while (account->deny != NULL) { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1777 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
|
1778 } |
27039
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
27034
diff
changeset
|
1779 } else if (item == NULL) { |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
27034
diff
changeset
|
1780 /* An empty <block/> is bogus */ |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
27034
diff
changeset
|
1781 xmlnode *error, *x; |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
27034
diff
changeset
|
1782 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
|
1783 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
|
1784 |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
27034
diff
changeset
|
1785 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
|
1786 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
|
1787 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
|
1788 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
|
1789 |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
27034
diff
changeset
|
1790 jabber_iq_send(result); |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
27034
diff
changeset
|
1791 return; |
27033
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1792 } else { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1793 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
|
1794 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
|
1795 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
|
1796 continue; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1797 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1798 if (is_block) |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1799 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
|
1800 else |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1801 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
|
1802 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1803 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1804 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1805 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
|
1806 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
|
1807 jabber_iq_send(result); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1808 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1809 |
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
|
1810 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
|
1811 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
|
1812 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
|
1813 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1814 xmlnode *blocklist, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1815 PurpleAccount *account; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1816 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1817 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
|
1818 "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
|
1819 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
|
1820 |
27034
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
27033
diff
changeset
|
1821 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
|
1822 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1823 |
27033
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1824 /* 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
|
1825 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
|
1826 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
|
1827 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
27015
diff
changeset
|
1828 /* |
27034
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
27033
diff
changeset
|
1829 * 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
|
1830 * 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
|
1831 */ |
27034
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
27033
diff
changeset
|
1832 while (account->deny) |
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
27033
diff
changeset
|
1833 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
|
1834 |
24820
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1835 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
|
1836 while (item != NULL) { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1837 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
|
1838 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
|
1839 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
|
1840 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1841 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1842 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1843 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
|
1844 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1845 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1846 xmlnode *blocklist; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1847 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1848 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
|
1849 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1850 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
|
1851 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
|
1852 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1853 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
|
1854 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1855 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
|
1856 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1857 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1858 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
|
1859 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1860 JabberStream *js; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1861 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1862 xmlnode *block, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1863 |
29140
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
29126
diff
changeset
|
1864 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
|
1865 |
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
29126
diff
changeset
|
1866 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
|
1867 if (js == NULL) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1868 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1869 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1870 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
|
1871 { |
29140
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
29126
diff
changeset
|
1872 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
|
1873 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1874 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1875 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1876 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
|
1877 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1878 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
|
1879 _("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
|
1880 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1881 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1882 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1883 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
|
1884 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1885 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
|
1886 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
|
1887 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1888 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
|
1889 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
|
1890 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1891 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
|
1892 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1893 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1894 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
|
1895 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1896 JabberStream *js; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1897 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1898 xmlnode *unblock, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1899 |
29140
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
29126
diff
changeset
|
1900 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
|
1901 |
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
29126
diff
changeset
|
1902 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
|
1903 if (js == NULL) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1904 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1905 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1906 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
|
1907 { |
29140
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
29126
diff
changeset
|
1908 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
|
1909 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1910 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1911 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1912 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
|
1913 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1914 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1915 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
|
1916 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1917 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
|
1918 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
|
1919 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1920 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
|
1921 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
|
1922 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1923 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
|
1924 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1925 |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1926 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
|
1927 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
|
1928 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1929 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
|
1930 |
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
|
1931 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
|
1932 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
|
1933 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
|
1934 |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1935 /* 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
|
1936 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
|
1937 |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1938 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
|
1939 } |
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17562
diff
changeset
|
1940 |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1941 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
|
1942 GList *feature; |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1943 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
|
1944 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
|
1945 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
|
1946 g_free(feat->namespace); |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1947 g_free(feature->data); |
21538 | 1948 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
|
1949 break; |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1950 } |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1951 } |
17563
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17562
diff
changeset
|
1952 } |
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17562
diff
changeset
|
1953 |
25763
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1954 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
|
1955 { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1956 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
|
1957 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
|
1958 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
|
1959 g_free(feature); |
28811 | 1960 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
|
1961 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1962 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1963 |
30688
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1964 gint |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1965 jabber_identity_compare(gconstpointer a, gconstpointer b) |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1966 { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1967 const JabberIdentity *ac; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1968 const JabberIdentity *bc; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1969 gint cat_cmp; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1970 gint typ_cmp; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1971 |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1972 ac = a; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1973 bc = b; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1974 |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1975 if ((cat_cmp = strcmp(ac->category, bc->category)) == 0) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1976 if ((typ_cmp = strcmp(ac->type, bc->type)) == 0) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1977 if (!ac->lang && !bc->lang) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1978 return 0; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1979 } else if (ac->lang && !bc->lang) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1980 return 1; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1981 } else if (!ac->lang && bc->lang) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1982 return -1; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1983 } else { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1984 return strcmp(ac->lang, bc->lang); |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1985 } |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1986 } else { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1987 return typ_cmp; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1988 } |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1989 } else { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1990 return cat_cmp; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1991 } |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1992 } |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1993 |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1994 void jabber_add_identity(const gchar *category, const gchar *type, |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1995 const gchar *lang, const gchar *name) |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1996 { |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1997 GList *identity; |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1998 JabberIdentity *ident; |
30688
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
1999 |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
2000 /* 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
|
2001 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
|
2002 g_return_if_fail(type != NULL); |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
2003 |
30688
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
2004 /* Check if this identity is already there... */ |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
2005 for (identity = jabber_identities; identity; identity = identity->next) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
2006 JabberIdentity *id = identity->data; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
2007 if (g_str_equal(id->category, category) && |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
2008 g_str_equal(id->type, type) && |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
2009 purple_strequal(id->lang, lang)) |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
2010 return; |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
2011 } |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
2012 |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
2013 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
|
2014 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
|
2015 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
|
2016 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
|
2017 ident->name = g_strdup(name); |
30688
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
2018 jabber_identities = g_list_insert_sorted(jabber_identities, ident, |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30653
diff
changeset
|
2019 jabber_identity_compare); |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
2020 } |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
2021 |
25763
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
2022 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
|
2023 { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
2024 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
|
2025 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
|
2026 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
|
2027 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
|
2028 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
|
2029 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
|
2030 g_free(id); |
28811 | 2031 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
|
2032 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
2033 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
2034 |
26354
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
2035 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
|
2036 { |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
2037 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
|
2038 (!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
|
2039 } |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
2040 |
30184
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2041 static gboolean |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2042 inactivity_cb(gpointer data) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2043 { |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2044 JabberStream *js = data; |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2045 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2046 /* We want whatever is sent to set this. It's okay because |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2047 * the eventloop unsets it via the return FALSE. |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2048 */ |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2049 js->inactivity_timer = 0; |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2050 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2051 if (js->bosh) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2052 jabber_bosh_connection_send_keepalive(js->bosh); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2053 else |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2054 jabber_send_raw(js, "\t", 1); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2055 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2056 return FALSE; |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2057 } |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2058 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2059 void jabber_stream_restart_inactivity_timer(JabberStream *js) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2060 { |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2061 if (js->inactivity_timer != 0) { |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2062 purple_timeout_remove(js->inactivity_timer); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2063 js->inactivity_timer = 0; |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2064 } |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2065 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2066 g_return_if_fail(js->max_inactivity > 0); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2067 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2068 js->inactivity_timer = |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2069 purple_timeout_add_seconds(js->max_inactivity, |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2070 inactivity_cb, js); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2071 } |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
30167
diff
changeset
|
2072 |
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
|
2073 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
|
2074 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2075 return "jabber"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2076 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2077 |
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
|
2078 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
|
2079 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2080 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2081 JabberBuddy *jb = NULL; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2082 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2083 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2084 if(!gc) |
15498
0d4890637238
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15463
diff
changeset
|
2085 return NULL; |
0d4890637238
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15463
diff
changeset
|
2086 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2087 js = gc->proto_data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2088 if(js) |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2089 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
|
2090 |
15823 | 2091 if(!PURPLE_BUDDY_IS_ONLINE(b)) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2092 if(jb && (jb->subscription & JABBER_SUB_PENDING || |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2093 !(jb->subscription & JABBER_SUB_TO))) |
15463 | 2094 return "not-authorized"; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2095 } |
27136
dd7e7071d46d
Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <paul@darkrain42.org>
parents:
27135
diff
changeset
|
2096 |
25836
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2097 if (jb) { |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2098 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
|
2099 if (jbr) { |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2100 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
|
2101 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
|
2102 |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2103 if (client_type) { |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2104 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
|
2105 return "mobile"; |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2106 } 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
|
2107 return "external"; |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2108 } 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
|
2109 return "hiptop"; |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2110 } 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
|
2111 return "bot"; |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2112 } |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2113 /* 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
|
2114 } |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2115 } |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2116 } |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25066
diff
changeset
|
2117 |
15463 | 2118 return NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2119 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2120 |
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
|
2121 char *jabber_status_text(PurpleBuddy *b) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2122 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2123 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
|
2124 JabberBuddy *jb = NULL; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2125 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
|
2126 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
|
2127 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2128 if (gc && gc->proto_data) |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2129 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
|
2130 |
15823 | 2131 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
|
2132 ret = g_strdup(_("Not Authorized")); |
15823 | 2133 } 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
|
2134 ret = g_strdup(jb->error_msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2135 } else { |
26773
803e05b3a871
Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents:
26767
diff
changeset
|
2136 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
|
2137 PurpleStatus *status = purple_presence_get_active_status(presence); |
27603
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2138 const char *message; |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2139 |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2140 if((message = purple_status_get_attr_string(status, "message"))) { |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2141 ret = g_markup_escape_text(message, -1); |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2142 } else if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) { |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2143 PurpleStatus *status = purple_presence_get_status(presence, "tune"); |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2144 const char *title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE); |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2145 const char *artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST); |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2146 const char *album = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM); |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2147 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
|
2148 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2149 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2150 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2151 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2152 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2153 |
25972
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2154 static void |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
2155 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
|
2156 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
|
2157 { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2158 char *text = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2159 char *res = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2160 char *label, *value; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2161 const char *state; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2162 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2163 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
|
2164 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
|
2165 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2166 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2167 if(jbr->name) |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2168 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
|
2169 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2170 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
|
2171 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
|
2172 g_free(text); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2173 text = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2174 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2175 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2176 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
|
2177 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
|
2178 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2179 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
|
2180 g_free(label); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2181 g_free(value); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2182 g_free(text); |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
2183 |
25972
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2184 /* 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
|
2185 /* 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
|
2186 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
|
2187 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
|
2188 if (jbr->idle && multiple_resources) { |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
2189 gchar *idle_str = |
25972
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2190 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
|
2191 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
|
2192 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
|
2193 g_free(idle_str); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2194 g_free(label); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2195 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2196 g_free(res); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2197 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2198 |
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
|
2199 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
|
2200 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2201 JabberBuddy *jb; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2202 PurpleAccount *account; |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2203 PurpleConnection *gc; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2204 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2205 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
|
2206 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2207 account = purple_buddy_get_account(b); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2208 g_return_if_fail(account != NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2209 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2210 gc = purple_account_get_connection(account); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2211 g_return_if_fail(gc != NULL); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2212 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
|
2213 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2214 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
|
2215 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2216 if(jb) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2217 JabberBuddyResource *jbr = NULL; |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2218 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
|
2219 const char *sub; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2220 GList *l; |
19722
eedf2918aace
Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@gmail.com>
parents:
19696
diff
changeset
|
2221 const char *mood; |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
2222 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
|
2223 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
|
2224 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
|
2225 |
25972
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2226 /* 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
|
2227 if (top_jbr) { |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
2228 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
|
2229 multiple_resources); |
1ad482221d70
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents:
25974
diff
changeset
|
2230 } |
25974
8202f850ca9e
Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents:
25973
diff
changeset
|
2231 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2232 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
|
2233 jbr = l->data; |
25972
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2234 /* the remaining resources */ |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2235 if (jbr != top_jbr) { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
2236 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
|
2237 multiple_resources); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2238 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2239 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2240 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2241 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
|
2242 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
|
2243 |
29834
1fb503adb2ae
Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents:
29829
diff
changeset
|
2244 status = purple_presence_get_status(presence, "mood"); |
1fb503adb2ae
Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents:
29829
diff
changeset
|
2245 mood = purple_status_get_attr_string(status, PURPLE_MOOD_NAME); |
29827
37be968cd42c
Check that mood is not the empty string, just to be safe.
Richard Laager <rlaager@wiktel.com>
parents:
29825
diff
changeset
|
2246 if(mood && *mood) { |
23271
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
2247 const char *moodtext; |
29862
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2248 /* find the mood */ |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2249 PurpleMood *moods = jabber_get_moods(account); |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2250 const char *description = NULL; |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2251 |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2252 for (; moods->mood ; moods++) { |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2253 if (purple_strequal(moods->mood, mood)) { |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2254 description = moods->description; |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2255 break; |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2256 } |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2257 } |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2258 |
29834
1fb503adb2ae
Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents:
29829
diff
changeset
|
2259 moodtext = purple_status_get_attr_string(status, PURPLE_MOOD_COMMENT); |
29825
b0e7b4daf465
Do not show "Mood: mood ()" when there is no text.
Richard Laager <rlaager@wiktel.com>
parents:
24155
diff
changeset
|
2260 if(moodtext && *moodtext) { |
29862
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2261 char *moodplustext = |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2262 g_strdup_printf("%s (%s)", description ? _(description) : mood, moodtext); |
23271
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
2263 |
17573
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17572
diff
changeset
|
2264 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
|
2265 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
|
2266 } else |
29862
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2267 purple_notify_user_info_add_pair(user_info, _("Mood"), |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29857
diff
changeset
|
2268 description ? _(description) : mood); |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2269 } |
22000
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2270 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
|
2271 PurpleStatus *tune = purple_presence_get_status(presence, "tune"); |
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2272 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
|
2273 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
|
2274 const char *album = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2275 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
|
2276 if (playing) { |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2277 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
|
2278 g_free(playing); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2279 } |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2280 } |
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
|
2281 |
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
|
2282 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
|
2283 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
|
2284 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
|
2285 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
|
2286 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
|
2287 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
|
2288 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
|
2289 } 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
|
2290 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
|
2291 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
|
2292 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
|
2293 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
|
2294 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
|
2295 sub = _("None"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2296 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2297 |
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
|
2298 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
|
2299 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2300 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2301 |
15823 | 2302 if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) { |
2303 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
|
2304 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2305 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2306 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2307 |
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
|
2308 GList *jabber_status_types(PurpleAccount *account) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2309 { |
15823 | 2310 PurpleStatusType *type; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2311 GList *types = NULL; |
15823 | 2312 PurpleValue *priority_value; |
24122
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
23988
diff
changeset
|
2313 PurpleValue *buzz_enabled; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2314 |
15823 | 2315 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2316 purple_value_set_int(priority_value, 1); | |
24122
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
23988
diff
changeset
|
2317 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
23988
diff
changeset
|
2318 purple_value_set_boolean(buzz_enabled, TRUE); |
15823 | 2319 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
|
2320 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
|
2321 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2322 "priority", _("Priority"), priority_value, |
15823 | 2323 "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
|
2324 "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
|
2325 "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
|
2326 "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
|
2327 "buzz", _("Allow Buzz"), buzz_enabled, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2328 NULL); |
29829
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29827
diff
changeset
|
2329 types = g_list_prepend(types, type); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2330 |
29857
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29852
diff
changeset
|
2331 |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29852
diff
changeset
|
2332 type = purple_status_type_new_with_attrs(PURPLE_STATUS_MOOD, |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29852
diff
changeset
|
2333 "mood", NULL, TRUE, TRUE, TRUE, |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29852
diff
changeset
|
2334 PURPLE_MOOD_NAME, _("Mood Name"), purple_value_new(PURPLE_TYPE_STRING), |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29852
diff
changeset
|
2335 PURPLE_MOOD_COMMENT, _("Mood Comment"), purple_value_new(PURPLE_TYPE_STRING), |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29852
diff
changeset
|
2336 NULL); |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29852
diff
changeset
|
2337 types = g_list_prepend(types, type); |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29852
diff
changeset
|
2338 |
15823 | 2339 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2340 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
|
2341 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
|
2342 purple_value_set_boolean(buzz_enabled, TRUE); |
15823 | 2343 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
|
2344 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
|
2345 _("Chatty"), TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2346 "priority", _("Priority"), priority_value, |
15823 | 2347 "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
|
2348 "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
|
2349 "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
|
2350 "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
|
2351 "buzz", _("Allow Buzz"), buzz_enabled, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2352 NULL); |
29829
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29827
diff
changeset
|
2353 types = g_list_prepend(types, type); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2354 |
15823 | 2355 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2356 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
|
2357 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
|
2358 purple_value_set_boolean(buzz_enabled, TRUE); |
15823 | 2359 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
|
2360 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
|
2361 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2362 "priority", _("Priority"), priority_value, |
15823 | 2363 "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
|
2364 "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
|
2365 "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
|
2366 "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
|
2367 "buzz", _("Allow Buzz"), buzz_enabled, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2368 NULL); |
29829
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29827
diff
changeset
|
2369 types = g_list_prepend(types, type); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2370 |
15823 | 2371 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2372 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
|
2373 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
|
2374 purple_value_set_boolean(buzz_enabled, TRUE); |
15823 | 2375 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
|
2376 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
|
2377 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2378 "priority", _("Priority"), priority_value, |
15823 | 2379 "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
|
2380 "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
|
2381 "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
|
2382 "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
|
2383 "buzz", _("Allow Buzz"), buzz_enabled, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2384 NULL); |
29829
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29827
diff
changeset
|
2385 types = g_list_prepend(types, type); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2386 |
15823 | 2387 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2388 purple_value_set_int(priority_value, 0); | |
2389 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
|
2390 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
|
2391 _("Do Not Disturb"), TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2392 "priority", _("Priority"), priority_value, |
15823 | 2393 "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
|
2394 "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
|
2395 "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
|
2396 "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
|
2397 NULL); |
29829
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29827
diff
changeset
|
2398 types = g_list_prepend(types, type); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2399 |
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 if(js->protocol_version == JABBER_PROTO_0_9) |
29829
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29827
diff
changeset
|
2402 "Invisible" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2403 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2404 |
15823 | 2405 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
|
2406 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
|
2407 NULL, TRUE, TRUE, FALSE, |
15823 | 2408 "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
|
2409 NULL); |
29829
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29827
diff
changeset
|
2410 types = g_list_prepend(types, type); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2411 |
20570
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2412 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
|
2413 "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
|
2414 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
|
2415 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
|
2416 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
|
2417 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
|
2418 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
|
2419 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
|
2420 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
|
2421 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
|
2422 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
|
2423 NULL); |
29829
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29827
diff
changeset
|
2424 types = g_list_prepend(types, type); |
20570
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2425 |
29829
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29827
diff
changeset
|
2426 return g_list_reverse(types); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2427 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2428 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2429 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
|
2430 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
|
2431 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
|
2432 xmlnode *packet, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2433 { |
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
|
2434 if (type == JABBER_IQ_RESULT) { |
15823 | 2435 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
|
2436 _("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
|
2437 |
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2438 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
|
2439 } 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
|
2440 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
|
2441 |
15823 | 2442 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
|
2443 _("Error changing password"), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2444 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2445 } |
21058
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2446 |
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2447 g_free(data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2448 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2449 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2450 static void jabber_password_change_cb(JabberStream *js, |
15823 | 2451 PurpleRequestFields *fields) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2452 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2453 const char *p1, *p2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2454 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2455 xmlnode *query, *y; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2456 |
15823 | 2457 p1 = purple_request_fields_get_string(fields, "password1"); |
2458 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
|
2459 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2460 if(strcmp(p1, p2)) { |
15823 | 2461 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
|
2462 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2463 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2464 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2465 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
|
2466 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2467 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
|
2468 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2469 query = xmlnode_get_child(iq->node, "query"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2470 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2471 y = xmlnode_new_child(query, "username"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2472 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
|
2473 y = xmlnode_new_child(query, "password"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2474 xmlnode_insert_data(y, p1, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2475 |
21058
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2476 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
|
2477 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2478 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2479 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2480 |
15823 | 2481 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
|
2482 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2483 |
15823 | 2484 PurpleConnection *gc = (PurpleConnection *) action->context; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2485 JabberStream *js = gc->proto_data; |
15823 | 2486 PurpleRequestFields *fields; |
2487 PurpleRequestFieldGroup *group; | |
2488 PurpleRequestField *field; | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2489 |
15823 | 2490 fields = purple_request_fields_new(); |
2491 group = purple_request_field_group_new(NULL); | |
2492 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
|
2493 |
15823 | 2494 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
|
2495 "", FALSE); |
15823 | 2496 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
|
2497 purple_request_field_set_required(field, TRUE); |
15823 | 2498 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
|
2499 |
15823 | 2500 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
|
2501 "", FALSE); |
15823 | 2502 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
|
2503 purple_request_field_set_required(field, TRUE); |
15823 | 2504 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
|
2505 |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2506 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
|
2507 _("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
|
2508 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
|
2509 _("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
|
2510 purple_connection_get_account(gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2511 js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2512 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2513 |
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
|
2514 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
|
2515 { |
17575
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17573
diff
changeset
|
2516 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
|
2517 JabberStream *js = gc->proto_data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2518 GList *m = NULL; |
15823 | 2519 PurplePluginAction *act; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2520 |
15823 | 2521 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
|
2522 jabber_setup_set_info); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2523 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2524 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2525 /* if (js->protocol_options & CHANGE_PASSWORD) { */ |
15823 | 2526 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
|
2527 jabber_password_change); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2528 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2529 /* } */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2530 |
15823 | 2531 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
|
2532 jabber_user_search_begin); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2533 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2534 |
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
|
2535 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
|
2536 |
17575
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17573
diff
changeset
|
2537 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
|
2538 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
|
2539 |
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
|
2540 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
|
2541 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
|
2542 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2543 return m; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2544 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2545 |
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
|
2546 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
|
2547 { |
15823 | 2548 PurpleBlistNode *gnode, *cnode; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2549 JabberID *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2550 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2551 if(!(jid = jabber_id_new(name))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2552 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2553 |
25289
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2554 for(gnode = purple_blist_get_root(); gnode; |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2555 gnode = purple_blist_node_get_sibling_next(gnode)) { |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2556 for(cnode = purple_blist_node_get_first_child(gnode); |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2557 cnode; |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2558 cnode = purple_blist_node_get_sibling_next(cnode)) { |
15823 | 2559 PurpleChat *chat = (PurpleChat*)cnode; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2560 const char *room, *server; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2561 GHashTable *components; |
15823 | 2562 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
|
2563 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2564 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2565 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
|
2566 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2567 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2568 components = purple_chat_get_components(chat); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2569 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
|
2570 continue; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2571 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
|
2572 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2573 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2574 if(jid->node && jid->domain && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2575 !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
|
2576 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2577 return chat; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2578 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2579 } |
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 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2582 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2583 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2584 |
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
|
2585 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
|
2586 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2587 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2588 JabberID *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2589 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2590 JabberBuddyResource *jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2591 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2592 if(!(jid = jabber_id_new(who))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2593 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2594 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2595 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
|
2596 (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
|
2597 if(jbr->thread_id) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2598 g_free(jbr->thread_id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2599 jbr->thread_id = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2600 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2601 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2602 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2603 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2604 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2605 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2606 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2607 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
|
2608 xmlnode *packet, |
21358 | 2609 PurpleConnectionError *reason) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2610 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2611 xmlnode *error; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2612 const char *code = NULL, *text = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2613 const char *xmlns = xmlnode_get_namespace(packet); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2614 char *cdata = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2615 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2616 #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
|
2617 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
|
2618 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2619 if((error = xmlnode_get_child(packet, "error"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2620 cdata = xmlnode_get_data(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2621 code = xmlnode_get_attrib(error, "code"); |
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 /* Stanza errors */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2624 if(xmlnode_get_child(error, "bad-request")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2625 text = _("Bad Request"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2626 } else if(xmlnode_get_child(error, "conflict")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2627 text = _("Conflict"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2628 } 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
|
2629 text = _("Feature Not Implemented"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2630 } else if(xmlnode_get_child(error, "forbidden")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2631 text = _("Forbidden"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2632 } else if(xmlnode_get_child(error, "gone")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2633 text = _("Gone"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2634 } 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
|
2635 text = _("Internal Server Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2636 } 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
|
2637 text = _("Item Not Found"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2638 } 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
|
2639 text = _("Malformed XMPP ID"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2640 } 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
|
2641 text = _("Not Acceptable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2642 } 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
|
2643 text = _("Not Allowed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2644 } 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
|
2645 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2646 } 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
|
2647 text = _("Payment Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2648 } 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
|
2649 text = _("Recipient Unavailable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2650 } else if(xmlnode_get_child(error, "redirect")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2651 /* XXX */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2652 } 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
|
2653 text = _("Registration Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2654 } 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
|
2655 text = _("Remote Server Not Found"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2656 } 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
|
2657 text = _("Remote Server Timeout"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2658 } 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
|
2659 text = _("Server Overloaded"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2660 } 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
|
2661 text = _("Service Unavailable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2662 } 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
|
2663 text = _("Subscription Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2664 } 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
|
2665 text = _("Unexpected Request"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2666 } 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
|
2667 text = _("Unknown Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2668 } |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29029
diff
changeset
|
2669 } 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
|
2670 /* 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
|
2671 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
|
2672 if(xmlnode_get_child(packet, "aborted")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2673 text = _("Authorization Aborted"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2674 } 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
|
2675 text = _("Incorrect encoding in authorization"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2676 } 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
|
2677 text = _("Invalid authzid"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2678 } 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
|
2679 text = _("Invalid Authorization Mechanism"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2680 } 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
|
2681 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
|
2682 text = _("Authorization mechanism too weak"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2683 } 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
|
2684 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
|
2685 /* 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
|
2686 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
|
2687 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
|
2688 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2689 } 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
|
2690 text = _("Temporary Authentication Failure"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2691 } 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
|
2692 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
|
2693 text = _("Authentication Failure"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2694 } |
15918
4be5d38ee117
Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <mark@kingant.net>
parents:
15916
diff
changeset
|
2695 } 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
|
2696 (!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
|
2697 !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
|
2698 /* Most common reason as default: */ |
21358 | 2699 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
|
2700 if(xmlnode_get_child(packet, "bad-format")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2701 text = _("Bad Format"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2702 } 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
|
2703 text = _("Bad Namespace Prefix"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2704 } else if(xmlnode_get_child(packet, "conflict")) { |
21358 | 2705 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
|
2706 text = _("Resource Conflict"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2707 } 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
|
2708 text = _("Connection Timeout"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2709 } 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
|
2710 text = _("Host Gone"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2711 } 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
|
2712 text = _("Host Unknown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2713 } 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
|
2714 text = _("Improper Addressing"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2715 } 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
|
2716 text = _("Internal Server Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2717 } 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
|
2718 text = _("Invalid ID"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2719 } 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
|
2720 text = _("Invalid Namespace"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2721 } 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
|
2722 text = _("Invalid XML"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2723 } 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
|
2724 text = _("Non-matching Hosts"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2725 } 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
|
2726 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2727 } 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
|
2728 text = _("Policy Violation"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2729 } 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
|
2730 text = _("Remote Connection Failed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2731 } 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
|
2732 text = _("Resource Constraint"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2733 } 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
|
2734 text = _("Restricted XML"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2735 } 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
|
2736 text = _("See Other Host"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2737 } 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
|
2738 text = _("System Shutdown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2739 } 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
|
2740 text = _("Undefined Condition"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2741 } 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
|
2742 text = _("Unsupported Encoding"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2743 } 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
|
2744 text = _("Unsupported Stanza Type"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2745 } 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
|
2746 text = _("Unsupported Version"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2747 } 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
|
2748 text = _("XML Not Well Formed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2749 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2750 text = _("Stream Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2751 } |
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 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2754 #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
|
2755 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2756 if(text || cdata) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2757 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
|
2758 code ? ": " : "", text ? text : cdata); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2759 g_free(cdata); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2760 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2761 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2762 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2763 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2764 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2765 |
15823 | 2766 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
|
2767 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
|
2768 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2769 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
|
2770 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2771 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
|
2772 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
|
2773 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2774 jabber_chat_request_room_configure(chat); |
15823 | 2775 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2776 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2777 |
15823 | 2778 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
|
2779 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
|
2780 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2781 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
|
2782 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2783 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
|
2784 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
|
2785 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2786 jabber_chat_register(chat); |
15823 | 2787 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2788 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2789 |
15823 | 2790 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
|
2791 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
|
2792 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2793 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
|
2794 |
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 |
26766
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2798 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
|
2799 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
|
2800 else { |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2801 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
|
2802 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
|
2803 |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2804 if (cur) { |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2805 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
|
2806 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
|
2807 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
|
2808 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
|
2809 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
|
2810 } else |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2811 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
|
2812 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
|
2813 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
|
2814 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
|
2815 } |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2816 |
15823 | 2817 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2818 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2819 |
15823 | 2820 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
|
2821 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
|
2822 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2823 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
|
2824 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2825 if(!chat || !args || !args[0]) |
15823 | 2826 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2827 |
28793
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28767
diff
changeset
|
2828 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
|
2829 *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
|
2830 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
|
2831 } |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28767
diff
changeset
|
2832 |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28767
diff
changeset
|
2833 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
|
2834 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
|
2835 else |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28767
diff
changeset
|
2836 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2837 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2838 |
15823 | 2839 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
|
2840 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
|
2841 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2842 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
|
2843 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2844 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
|
2845 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
|
2846 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2847 jabber_chat_part(chat, args ? args[0] : NULL); |
15823 | 2848 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2849 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2850 |
15823 | 2851 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
|
2852 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
|
2853 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2854 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
|
2855 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2856 if(!chat || !args || !args[0]) |
15823 | 2857 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2858 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2859 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
|
2860 *error = g_strdup_printf(_("Unable to ban user %s"), args[0]); |
15823 | 2861 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2862 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2863 |
15823 | 2864 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2865 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2866 |
15823 | 2867 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
|
2868 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
|
2869 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2870 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
|
2871 |
26884
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2872 if (!chat || !args || !args[0]) |
15823 | 2873 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2874 |
26884
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2875 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
|
2876 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
|
2877 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
|
2878 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
|
2879 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
|
2880 *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[0]); |
15823 | 2881 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2882 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2883 |
26884
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2884 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
|
2885 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
|
2886 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
|
2887 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2888 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
|
2889 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
|
2890 *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
|
2891 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
|
2892 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
|
2893 } |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2894 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2895 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
|
2896 } else { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2897 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
|
2898 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2899 |
15823 | 2900 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2901 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2902 |
15823 | 2903 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
|
2904 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
|
2905 { |
18855
28a7c9dbbc2b
Fix uninitialized variable access.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18711
diff
changeset
|
2906 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
|
2907 |
26884
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2908 if (!chat || !args || !args[0]) |
15823 | 2909 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2910 |
26884
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2911 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
|
2912 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
|
2913 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
|
2914 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
|
2915 *error = g_strdup_printf(_("Unknown role: \"%s\""), args[0]); |
15823 | 2916 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2917 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2918 |
26884
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2919 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
|
2920 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
|
2921 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
|
2922 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2923 for (i = 0; nicks[i]; i++) |
29464
c8b407fec879
jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <paul@darkrain42.org>
parents:
29462
diff
changeset
|
2924 if (!jabber_chat_role_user(chat, nicks[i], args[0], NULL)) { |
26884
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2925 *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
|
2926 args[0], nicks[i]); |
29462
403a53ff9aa4
jabber: Possible leaks--;
Paul Aurich <paul@darkrain42.org>
parents:
29439
diff
changeset
|
2927 g_strfreev(nicks); |
26884
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2928 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
|
2929 } |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2930 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2931 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
|
2932 } else { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26859
diff
changeset
|
2933 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
|
2934 } |
15823 | 2935 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2936 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2937 |
15823 | 2938 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
|
2939 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
|
2940 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2941 if(!args || !args[0]) |
15823 | 2942 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2943 |
15823 | 2944 jabber_chat_invite(purple_conversation_get_gc(conv), |
2945 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
|
2946 args[0]); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2947 |
15823 | 2948 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2949 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2950 |
15823 | 2951 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
|
2952 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
|
2953 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2954 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
|
2955 GHashTable *components; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2956 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2957 if(!chat || !args || !args[0]) |
15823 | 2958 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2959 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2960 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
|
2961 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2962 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
|
2963 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
|
2964 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
|
2965 if(args[1]) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2966 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
|
2967 |
15823 | 2968 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
|
2969 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2970 g_hash_table_destroy(components); |
15823 | 2971 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2972 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2973 |
15823 | 2974 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
|
2975 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
|
2976 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2977 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
|
2978 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2979 if(!chat || !args || !args[0]) |
15823 | 2980 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2981 |
29464
c8b407fec879
jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <paul@darkrain42.org>
parents:
29462
diff
changeset
|
2982 if(!jabber_chat_role_user(chat, args[0], "none", args[1])) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2983 *error = g_strdup_printf(_("Unable to kick user %s"), args[0]); |
15823 | 2984 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2985 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2986 |
15823 | 2987 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2988 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2989 |
15823 | 2990 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
|
2991 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
|
2992 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2993 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
|
2994 char *who; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2995 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2996 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
|
2997 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
|
2998 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2999 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
|
3000 |
15823 | 3001 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
|
3002 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3003 g_free(who); |
15823 | 3004 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3005 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3006 |
17562
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3007 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
|
3008 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
|
3009 { |
25984
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
3010 PurpleAccount *account; |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
3011 PurpleConnection *pc; |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
3012 |
17562
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3013 if(!args || !args[0]) |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3014 return PURPLE_CMD_RET_FAILED; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3015 |
25984
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
3016 account = purple_conversation_get_account(conv); |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
3017 pc = purple_account_get_connection(account); |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
3018 |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
3019 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
|
3020 *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
|
3021 return PURPLE_CMD_RET_FAILED; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3022 } |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3023 |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3024 return PURPLE_CMD_RET_OK; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3025 } |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3026 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3027 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
|
3028 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3029 JabberBuddy *jb; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3030 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
|
3031 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
|
3032 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
|
3033 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
|
3034 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
|
3035 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
|
3036 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3037 if(!username) |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3038 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3039 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3040 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
|
3041 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
|
3042 *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
|
3043 "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
|
3044 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3045 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3046 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3047 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
|
3048 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
|
3049 *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
|
3050 alias); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3051 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3052 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3053 |
29026
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28971
diff
changeset
|
3054 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
|
3055 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
|
3056 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
|
3057 |
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
|
3058 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
|
3059 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
|
3060 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
|
3061 |
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
|
3062 /* 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
|
3063 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
|
3064 |
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
|
3065 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
|
3066 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
|
3067 |
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
|
3068 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
|
3069 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
|
3070 |
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
|
3071 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
|
3072 } 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
|
3073 *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
|
3074 "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
|
3075 return FALSE; |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3076 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3077 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3078 |
17615
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3079 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv, |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3080 const char *cmd, char **args, char **error, void *data) |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3081 { |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3082 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
|
3083 const gchar *who; |
29672
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3084 gchar *description; |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3085 PurpleBuddy *buddy; |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3086 const char *alias; |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3087 PurpleAttentionType *attn = |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3088 purple_get_attention_type_from_code(conv->account, 0); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
3089 |
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
|
3090 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
|
3091 /* 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
|
3092 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
|
3093 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
|
3094 } 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
|
3095 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
|
3096 } |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
3097 } 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
|
3098 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
|
3099 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
3100 |
29672
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3101 buddy = purple_find_buddy(conv->account, who); |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3102 if (buddy != NULL) |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3103 alias = purple_buddy_get_contact_alias(buddy); |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3104 else |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3105 alias = who; |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3106 |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3107 description = |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3108 g_strdup_printf(purple_attention_type_get_outgoing_desc(attn), alias); |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3109 purple_conversation_write(conv, NULL, description, |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3110 PURPLE_MESSAGE_NOTIFY | PURPLE_MESSAGE_SYSTEM, time(NULL)); |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3111 g_free(description); |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29669
diff
changeset
|
3112 return _jabber_send_buzz(js, who, error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED; |
17615
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3113 } |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3114 |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3115 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
|
3116 { |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3117 static GList *types = NULL; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3118 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3119 if (!types) { |
22097
eab7d03edfcb
This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22034
diff
changeset
|
3120 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
|
3121 _("%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
|
3122 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3123 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3124 return types; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3125 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3126 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3127 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
|
3128 { |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3129 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
|
3130 gchar *error = NULL; |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3131 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3132 if (!_jabber_send_buzz(js, username, &error)) { |
29901
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29889
diff
changeset
|
3133 PurpleAccount *account = purple_connection_get_account(gc); |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29889
diff
changeset
|
3134 PurpleConversation *conv = |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29889
diff
changeset
|
3135 purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, username, account); |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3136 purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)"); |
29901
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29889
diff
changeset
|
3137 |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29889
diff
changeset
|
3138 if (conv) { |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29889
diff
changeset
|
3139 purple_conversation_write(conv, username, error, PURPLE_MESSAGE_ERROR, |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29889
diff
changeset
|
3140 time(NULL)); |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29889
diff
changeset
|
3141 } |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29889
diff
changeset
|
3142 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3143 g_free(error); |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3144 return FALSE; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3145 } |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3146 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3147 return TRUE; |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3148 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3149 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3150 |
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
|
3151 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
|
3152 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3153 return TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3154 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3155 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3156 #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
|
3157 gboolean |
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26536
diff
changeset
|
3158 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
|
3159 { |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3160 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
|
3161 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
|
3162 |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3163 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
|
3164 } |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3165 |
27079
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27069
diff
changeset
|
3166 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
|
3167 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
|
3168 { |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3169 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
|
3170 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
|
3171 |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3172 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
|
3173 } |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3174 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3175 typedef struct { |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3176 PurpleAccount *account; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3177 gchar *who; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3178 PurpleMediaSessionType type; |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
3179 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3180 } JabberMediaRequest; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3181 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3182 static void |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3183 jabber_media_cancel_cb(JabberMediaRequest *request, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3184 PurpleRequestFields *fields) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3185 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3186 g_free(request->who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3187 g_free(request); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3188 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3189 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3190 static void |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3191 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
|
3192 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3193 PurpleRequestField *field = |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3194 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
|
3195 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
|
3196 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
|
3197 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
|
3198 (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
|
3199 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
|
3200 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3201 g_free(who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3202 g_free(request->who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3203 g_free(request); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3204 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3205 #endif |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3206 |
26447
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26417
diff
changeset
|
3207 gboolean |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
3208 jabber_initiate_media(PurpleAccount *account, const char *who, |
25720
551a462b346a
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25718
diff
changeset
|
3209 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
|
3210 { |
26416
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26361
diff
changeset
|
3211 #ifdef USE_VV |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3212 JabberStream *js = (JabberStream *) |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3213 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
|
3214 JabberBuddy *jb; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3215 JabberBuddyResource *jbr = NULL; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3216 char *resource; |
26081
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
3217 |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
3218 if (!js) { |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
3219 purple_debug_error("jabber", |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
3220 "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
|
3221 return FALSE; |
26081
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
3222 } |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
3223 |
26514
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 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
|
3226 /* 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
|
3227 * default or anything, just do it */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3228 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3229 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
|
3230 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
|
3231 g_free(resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3232 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3233 if (type & PURPLE_MEDIA_AUDIO && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3234 !jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3235 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
|
3236 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
|
3237 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
|
3238 else |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3239 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
|
3240 } |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
3241 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3242 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
|
3243 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3244 if(!jb || !jb->resources) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3245 /* 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
|
3246 * 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
|
3247 * 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
|
3248 char *msg; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3249 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3250 if(!jb) { |
26518
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26514
diff
changeset
|
3251 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
|
3252 } else if(jb->subscription & JABBER_SUB_TO) { |
26518
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26514
diff
changeset
|
3253 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
|
3254 } else { |
26518
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26514
diff
changeset
|
3255 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
|
3256 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3257 |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3258 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
|
3259 _("Media Initiation Failed"), msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3260 g_free(msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3261 return FALSE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3262 } else if(!jb->resources->next) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3263 /* 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
|
3264 * 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
|
3265 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3266 gboolean result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3267 jbr = jb->resources->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3268 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
|
3269 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
|
3270 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3271 return result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3272 } else { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3273 /* we've got multiple resources, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3274 * 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
|
3275 GList *l; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3276 char *msg; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3277 PurpleRequestFields *fields; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3278 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
|
3279 "resource", _("Resource"), 0); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3280 PurpleRequestFieldGroup *group; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3281 JabberMediaRequest *request; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3282 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3283 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
|
3284 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3285 JabberBuddyResource *ljbr = l->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3286 PurpleMediaCaps caps; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3287 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3288 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
|
3289 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
|
3290 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3291 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3292 if ((type & PURPLE_MEDIA_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3293 (type & PURPLE_MEDIA_VIDEO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3294 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
|
3295 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3296 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3297 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3298 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3299 } else if (type & (PURPLE_MEDIA_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3300 (caps & PURPLE_MEDIA_CAPS_AUDIO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3301 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3302 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3303 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3304 }else if (type & (PURPLE_MEDIA_VIDEO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3305 (caps & PURPLE_MEDIA_CAPS_VIDEO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3306 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3307 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3308 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3309 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3310 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3311 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3312 if (jbr == NULL) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3313 purple_debug_error("jabber", |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3314 "No resources available\n"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3315 return FALSE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3316 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3317 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3318 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
|
3319 field)) <= 1) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3320 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3321 gboolean result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3322 purple_request_field_destroy(field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3323 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
|
3324 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
|
3325 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3326 return result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3327 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3328 |
26518
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26514
diff
changeset
|
3329 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
|
3330 fields = purple_request_fields_new(); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3331 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
|
3332 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
|
3333 request->account = account; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3334 request->who = g_strdup(who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3335 request->type = type; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3336 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3337 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
|
3338 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
|
3339 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
|
3340 NULL, fields, _("Initiate Media"), |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3341 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
|
3342 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
|
3343 account, who, NULL, request); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3344 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3345 g_free(msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3346 return TRUE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3347 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3348 #endif |
26447
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26417
diff
changeset
|
3349 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
|
3350 } |
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
3351 |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3352 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
|
3353 { |
26416
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26361
diff
changeset
|
3354 #ifdef USE_VV |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3355 JabberStream *js = (JabberStream *) |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3356 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
|
3357 JabberBuddy *jb; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3358 JabberBuddyResource *jbr; |
29414
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29413
diff
changeset
|
3359 PurpleMediaCaps total = PURPLE_MEDIA_CAPS_NONE; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3360 gchar *resource; |
29413
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3361 GList *specific = NULL, *l; |
25665
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25664
diff
changeset
|
3362 |
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
|
3363 if (!js) { |
26500
da651b0f40a1
Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26447
diff
changeset
|
3364 purple_debug_info("jabber", |
da651b0f40a1
Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26447
diff
changeset
|
3365 "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
|
3366 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
|
3367 } |
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
|
3368 |
29413
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3369 jb = jabber_buddy_find(js, who, FALSE); |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3370 |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3371 if (!jb || !jb->resources) { |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3372 /* no resources online, we're trying to get caps for someone |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3373 * whose presence we're not subscribed to, or |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3374 * someone who is offline. */ |
29414
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29413
diff
changeset
|
3375 return total; |
29413
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3376 |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3377 } else if ((resource = jabber_get_resource(who)) != NULL) { |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3378 /* 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
|
3379 * default or anything, just do it */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3380 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
|
3381 g_free(resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3382 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3383 if (!jbr) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3384 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
|
3385 " Can't find resource %s\n", who); |
29414
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29413
diff
changeset
|
3386 return total; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3387 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3388 |
29413
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3389 l = specific = g_list_prepend(specific, jbr); |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3390 |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3391 } else { |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3392 /* we've got multiple resources, combine their caps */ |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3393 l = jb->resources; |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3394 } |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3395 |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3396 for (; l; l = l->next) { |
29414
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29413
diff
changeset
|
3397 PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE; |
29413
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3398 jbr = l->data; |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3399 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3400 if (jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3401 JINGLE_APP_RTP_SUPPORT_AUDIO)) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3402 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
|
3403 PURPLE_MEDIA_CAPS_AUDIO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3404 if (jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3405 JINGLE_APP_RTP_SUPPORT_VIDEO)) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3406 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
|
3407 PURPLE_MEDIA_CAPS_VIDEO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3408 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
|
3409 PURPLE_MEDIA_CAPS_VIDEO) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3410 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3411 if (caps != PURPLE_MEDIA_CAPS_NONE) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3412 if (!jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3413 JINGLE_TRANSPORT_ICEUDP) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3414 !jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3415 JINGLE_TRANSPORT_RAWUDP)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3416 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
|
3417 "support the same transport types\n"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3418 caps = PURPLE_MEDIA_CAPS_NONE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3419 } else |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3420 caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION | |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3421 PURPLE_MEDIA_CAPS_CHANGE_DIRECTION; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3422 } |
29026
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28971
diff
changeset
|
3423 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
|
3424 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
|
3425 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
|
3426 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
27069
diff
changeset
|
3427 } |
29414
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29413
diff
changeset
|
3428 |
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29413
diff
changeset
|
3429 total |= caps; |
25664
d0ac3c438b71
Check remote JID's capabilities for audio and video XEP support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25662
diff
changeset
|
3430 } |
26046
99055b8db16b
Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26043
diff
changeset
|
3431 |
29413
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3432 if (specific) { |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29333
diff
changeset
|
3433 g_list_free(specific); |
26046
99055b8db16b
Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26043
diff
changeset
|
3434 } |
26190
d6e23439b77c
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26168
diff
changeset
|
3435 |
29414
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29413
diff
changeset
|
3436 return total; |
26416
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26361
diff
changeset
|
3437 #else |
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26361
diff
changeset
|
3438 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
|
3439 #endif |
25637
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
3440 } |
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
3441 |
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
|
3442 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
|
3443 { |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3444 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
|
3445 |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3446 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
|
3447 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
|
3448 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
|
3449 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
|
3450 |
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
|
3451 /* 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
|
3452 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
|
3453 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
|
3454 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
|
3455 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
|
3456 |
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
|
3457 /* 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
|
3458 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
|
3459 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
|
3460 |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3461 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
|
3462 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
|
3463 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3464 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3465 |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3466 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
|
3467 /* 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
|
3468 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
|
3469 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
|
3470 } 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
|
3471 /* 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
|
3472 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
|
3473 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
|
3474 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
|
3475 |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30629
diff
changeset
|
3476 if (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER) |
28911
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3477 && (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
|
3478 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
|
3479 || 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
|
3480 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
|
3481 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3482 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3483 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
|
3484 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3485 } 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
|
3486 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
|
3487 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3488 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28893
diff
changeset
|
3489 |
29956
342ed5917f56
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents:
29949
diff
changeset
|
3490 static PurpleCmdRet |
29949
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3491 jabber_cmd_mood(PurpleConversation *conv, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3492 const char *cmd, char **args, char **error, void *data) |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3493 { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3494 JabberStream *js = conv->account->gc->proto_data; |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3495 |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3496 if (js->pep) { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3497 /* if no argument was given, unset mood */ |
30848
77ac5f4584bd
I'm pretty sure this is a logical operation, not bitwise.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30753
diff
changeset
|
3498 if (!args || !args[0]) { |
29949
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3499 jabber_mood_set(js, NULL, NULL); |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3500 } else if (!args[1]) { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3501 jabber_mood_set(js, args[0], NULL); |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3502 } else { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3503 jabber_mood_set(js, args[0], args[1]); |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3504 } |
29956
342ed5917f56
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents:
29949
diff
changeset
|
3505 |
342ed5917f56
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents:
29949
diff
changeset
|
3506 return PURPLE_CMD_RET_OK; |
29949
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3507 } else { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3508 /* account does not support PEP, can't set a mood */ |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3509 purple_conversation_write(conv, NULL, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3510 _("Account does not support PEP, can't set mood"), |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3511 PURPLE_MESSAGE_ERROR, time(NULL)); |
29956
342ed5917f56
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents:
29949
diff
changeset
|
3512 return PURPLE_CMD_RET_FAILED; |
29949
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3513 } |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3514 } |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3515 |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3516 static void jabber_register_commands(PurplePlugin *plugin) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3517 { |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3518 GSList *commands = NULL; |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3519 PurpleCmdId id; |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3520 id = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL, |
15823 | 3521 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
|
3522 "prpl-jabber", jabber_cmd_chat_config, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3523 _("config: Configure a chat room."), NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3524 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3525 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3526 id = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL, |
15823 | 3527 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
|
3528 "prpl-jabber", jabber_cmd_chat_config, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3529 _("configure: Configure a chat room."), NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3530 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3531 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3532 id = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL, |
15823 | 3533 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
|
3534 "prpl-jabber", jabber_cmd_chat_nick, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3535 _("nick <new nickname>: Change your nickname."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3536 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3537 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3538 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3539 id = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL, |
15823 | 3540 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3541 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
|
3542 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
|
3543 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3544 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3545 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3546 id = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL, |
15823 | 3547 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
|
3548 "prpl-jabber", jabber_cmd_chat_register, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3549 _("register: Register with a chat room."), NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3550 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3551 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3552 /* 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
|
3553 id = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, |
15823 | 3554 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3555 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
|
3556 jabber_cmd_chat_topic, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3557 _("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
|
3558 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3559 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3560 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3561 id = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL, |
15823 | 3562 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3563 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
|
3564 jabber_cmd_chat_ban, |
22602
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22448
diff
changeset
|
3565 _("ban <user> [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
|
3566 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3567 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3568 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3569 id = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL, |
15823 | 3570 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3571 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
|
3572 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
|
3573 _("affiliate <owner|admin|member|outcast|none> [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
|
3574 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3575 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3576 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3577 id = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL, |
15823 | 3578 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3579 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
|
3580 jabber_cmd_chat_role, |
28321
23dda7e57bcf
Fix two strings as pointed out on translators@
Paul Aurich <paul@darkrain42.org>
parents:
28319
diff
changeset
|
3581 _("role <moderator|participant|visitor|none> [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
|
3582 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3583 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3584 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3585 id = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL, |
15823 | 3586 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3587 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
|
3588 jabber_cmd_chat_invite, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3589 _("invite <user> [message]: Invite a user to the room."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3590 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3591 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3592 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3593 id = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL, |
15823 | 3594 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3595 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
|
3596 jabber_cmd_chat_join, |
22602
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22448
diff
changeset
|
3597 _("join: <room> [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
|
3598 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3599 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3600 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3601 id = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL, |
15823 | 3602 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3603 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
|
3604 jabber_cmd_chat_kick, |
22602
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22448
diff
changeset
|
3605 _("kick <user> [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
|
3606 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3607 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3608 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3609 id = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL, |
15823 | 3610 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
|
3611 "prpl-jabber", jabber_cmd_chat_msg, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3612 _("msg <user> <message>: Send a private message to another user."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3613 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3614 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3615 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3616 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
|
3617 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
|
3618 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
|
3619 "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
|
3620 _("ping <jid>: 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
|
3621 NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3622 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3623 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3624 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
|
3625 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
|
3626 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, |
17615
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3627 "prpl-jabber", jabber_cmd_buzz, |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3628 _("buzz: Buzz a user to get their attention"), NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3629 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
29949
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3630 |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3631 id = purple_cmd_register("mood", "ws", PURPLE_CMD_P_PRPL, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3632 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3633 PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3634 "prpl-jabber", jabber_cmd_mood, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29901
diff
changeset
|
3635 _("mood: Set current user mood"), NULL); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3636 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3637 |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3638 g_hash_table_insert(jabber_cmds, plugin, commands); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3639 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3640 |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3641 static void cmds_free_func(gpointer value) |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3642 { |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3643 GSList *commands = value; |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3644 while (commands) { |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3645 purple_cmd_unregister(GPOINTER_TO_UINT(commands->data)); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3646 commands = g_slist_delete_link(commands, commands); |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3647 } |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3648 } |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3649 |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3650 static void jabber_unregister_commands(PurplePlugin *plugin) |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3651 { |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3652 g_hash_table_remove(jabber_cmds, plugin); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3653 } |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3654 |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3655 /* IPC functions */ |
25587
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25586
diff
changeset
|
3656 |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3657 /** |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3658 * 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
|
3659 * |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3660 * @param account The PurpleAccount |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3661 * @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
|
3662 * @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
|
3663 * |
25587
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25586
diff
changeset
|
3664 * @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
|
3665 */ |
25586
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3666 static gboolean |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3667 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
|
3668 const gchar *feature) |
25586
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3669 { |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3670 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
|
3671 JabberStream *js; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3672 JabberBuddy *jb; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3673 JabberBuddyResource *jbr; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3674 gchar *resource; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3675 |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3676 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
|
3677 return FALSE; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3678 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
|
3679 |
27014
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26999
diff
changeset
|
3680 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
|
3681 !(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
|
3682 !(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
|
3683 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
|
3684 return FALSE; |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3685 } |
25747
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3686 |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3687 g_free(resource); |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3688 |
25770
b1b1b75a922e
Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents:
25763
diff
changeset
|
3689 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
|
3690 } |
45816181b7de
* fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25575
diff
changeset
|
3691 |
25588
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25587
diff
changeset
|
3692 static void |
25747
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3693 jabber_ipc_add_feature(const gchar *feature) |
25588
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25587
diff
changeset
|
3694 { |
25747
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3695 if (!feature) |
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3696 return; |
25589 | 3697 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
|
3698 |
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3699 /* 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
|
3700 jabber_caps_broadcast_change(); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3701 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3702 |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3703 static void |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3704 jabber_do_init(void) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3705 { |
27064
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3706 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
|
3707 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
|
3708 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
|
3709 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
|
3710 const gchar *ui_name = NULL; |
29959
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3711 #ifdef HAVE_CYRUS_SASL |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3712 /* We really really only want to do this once per process */ |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3713 static gboolean sasl_initialized = FALSE; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3714 #ifdef _WIN32 |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3715 UINT old_error_mode; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3716 gchar *sasldir; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3717 #endif |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3718 int ret; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3719 #endif |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3720 |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3721 /* XXX - If any other plugin wants SASL this won't be good ... */ |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3722 #ifdef HAVE_CYRUS_SASL |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3723 if (!sasl_initialized) { |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3724 sasl_initialized = TRUE; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3725 #ifdef _WIN32 |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3726 sasldir = g_build_filename(wpurple_install_dir(), "sasl2", NULL); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3727 sasl_set_path(SASL_PATH_TYPE_PLUGIN, sasldir); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3728 g_free(sasldir); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3729 /* Suppress error popups for failing to load sasl plugins */ |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3730 old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3731 #endif |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3732 if ((ret = sasl_client_init(NULL)) != SASL_OK) { |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3733 purple_debug_error("xmpp", "Error (%d) initializing SASL.\n", ret); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3734 } |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3735 #ifdef _WIN32 |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3736 /* Restore the original error mode */ |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3737 SetErrorMode(old_error_mode); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3738 #endif |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3739 } |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29958
diff
changeset
|
3740 #endif |
27064
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3741 |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3742 jabber_cmds = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, cmds_free_func); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3743 |
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
|
3744 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
|
3745 if (ui_type) { |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3746 if (strcmp(ui_type, "pc") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3747 strcmp(ui_type, "console") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3748 strcmp(ui_type, "phone") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3749 strcmp(ui_type, "handheld") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3750 strcmp(ui_type, "web") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3751 strcmp(ui_type, "bot") == 0) { |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3752 type = ui_type; |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3753 } |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
27063
diff
changeset
|
3754 } |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3755 |
27593
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27592
diff
changeset
|
3756 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
|
3757 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
|
3758 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
|
3759 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
|
3760 |
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27592
diff
changeset
|
3761 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
|
3762 |
25586
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3763 /* 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
|
3764 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
|
3765 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
|
3766 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
|
3767 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
|
3768 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
|
3769 jabber_add_feature(NS_BYTESTREAMS, 0); |
25825
69495c6f12af
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents:
25824
diff
changeset
|
3770 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
|
3771 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
|
3772 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
|
3773 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
|
3774 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
|
3775 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
|
3776 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
|
3777 jabber_add_feature("http://jabber.org/protocol/si", 0); |
30653
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30629
diff
changeset
|
3778 jabber_add_feature(NS_SI_FILE_TRANSFER, 0); |
29031
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
29029
diff
changeset
|
3779 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
|
3780 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
|
3781 |
26885
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3782 /* 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
|
3783 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
|
3784 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26884
diff
changeset
|
3785 /* 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
|
3786 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
|
3787 |
26529
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26528
diff
changeset
|
3788 /* Jingle features! */ |
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26528
diff
changeset
|
3789 jabber_add_feature(JINGLE, 0); |
26536
9131368ba4be
Advertise ICEUDP only when libnice is available
Paul Aurich <paul@darkrain42.org>
parents:
26535
diff
changeset
|
3790 |
26535
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3791 #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
|
3792 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
|
3793 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
|
3794 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
|
3795 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
|
3796 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
|
3797 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
|
3798 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
|
3799 jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0); |
26819
8b7d1aed6d59
merge of '8ddbfe5d6f5c2455497d11ccbfff769ed4e9fad4'
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
3800 jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0); |
29526
44e949b676f0
Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents:
28729
diff
changeset
|
3801 |
44e949b676f0
Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents:
28729
diff
changeset
|
3802 g_signal_connect(G_OBJECT(purple_media_manager_get()), "ui-caps-changed", |
44e949b676f0
Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents:
28729
diff
changeset
|
3803 G_CALLBACK(jabber_caps_broadcast_change), NULL); |
26535
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3804 #endif |
26529
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26528
diff
changeset
|
3805 |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3806 /* reverse order of unload_plugin */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3807 jabber_iq_init(); |
29960
13f320cde14f
jabber: Heavily refactor jabber_presence_parse(). It's still not short enough.
Paul Aurich <paul@darkrain42.org>
parents:
29959
diff
changeset
|
3808 jabber_presence_init(); |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3809 jabber_caps_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3810 /* PEP things should be init via jabber_pep_init, not here */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3811 jabber_pep_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3812 jabber_data_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3813 jabber_bosh_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3814 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3815 /* TODO: Implement adding and retrieving own features via IPC API */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3816 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3817 jabber_ibb_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3818 jabber_si_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3819 |
29078
8ada06fb65ed
jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents:
28893
diff
changeset
|
3820 jabber_auth_init(); |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3821 } |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3822 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3823 static void |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3824 jabber_do_uninit(void) |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3825 { |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3826 /* reverse order of jabber_do_init */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3827 jabber_bosh_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3828 jabber_data_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3829 jabber_si_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3830 jabber_ibb_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3831 /* PEP things should be uninit via jabber_pep_uninit, not here */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3832 jabber_pep_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3833 jabber_caps_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3834 jabber_presence_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3835 jabber_iq_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3836 |
30167 | 3837 #ifdef USE_VV |
3838 g_signal_handlers_disconnect_by_func(G_OBJECT(purple_media_manager_get()), | |
3839 G_CALLBACK(jabber_caps_broadcast_change), NULL); | |
3840 #endif | |
3841 | |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3842 jabber_auth_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3843 jabber_features_destroy(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3844 jabber_identities_destroy(); |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3845 |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3846 g_hash_table_destroy(jabber_cmds); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3847 jabber_cmds = NULL; |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3848 } |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3849 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3850 void jabber_plugin_init(PurplePlugin *plugin) |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3851 { |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3852 ++plugin_ref; |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3853 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3854 if (plugin_ref == 1) |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3855 jabber_do_init(); |
29078
8ada06fb65ed
jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents:
28893
diff
changeset
|
3856 |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3857 jabber_register_commands(plugin); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3858 |
25586
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3859 /* IPC functions */ |
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3860 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
|
3861 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
|
3862 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
|
3863 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
|
3864 purple_value_new(PURPLE_TYPE_STRING), |
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3865 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
|
3866 |
25589 | 3867 purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature), |
3868 purple_marshal_VOID__POINTER, | |
3869 NULL, 1, | |
3870 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
|
3871 |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27084
diff
changeset
|
3872 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
|
3873 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
|
3874 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
|
3875 NULL, 2, |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27084
diff
changeset
|
3876 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
|
3877 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
|
3878 |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27084
diff
changeset
|
3879 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
|
3880 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
|
3881 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
|
3882 NULL, 2, |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27084
diff
changeset
|
3883 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
|
3884 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3885 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3886 purple_signal_register(plugin, "jabber-register-namespace-watcher", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3887 purple_marshal_VOID__POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3888 NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3889 purple_value_new(PURPLE_TYPE_STRING), /* node */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3890 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3891 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3892 purple_signal_register(plugin, "jabber-unregister-namespace-watcher", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3893 purple_marshal_VOID__POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3894 NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3895 purple_value_new(PURPLE_TYPE_STRING), /* node */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3896 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3897 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3898 purple_signal_connect(plugin, "jabber-register-namespace-watcher", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3899 plugin, PURPLE_CALLBACK(jabber_iq_signal_register), NULL); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3900 purple_signal_connect(plugin, "jabber-unregister-namespace-watcher", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3901 plugin, PURPLE_CALLBACK(jabber_iq_signal_unregister), NULL); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3902 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3903 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3904 purple_signal_register(plugin, "jabber-receiving-xmlnode", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3905 purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3906 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3907 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3908 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3909 purple_signal_register(plugin, "jabber-sending-xmlnode", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3910 purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3911 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3912 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3913 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3914 /* |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3915 * Do not remove this or the plugin will fail. Completely. You have been |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3916 * warned! |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3917 */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3918 purple_signal_connect_priority(plugin, "jabber-sending-xmlnode", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3919 plugin, PURPLE_CALLBACK(jabber_send_signal_cb), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3920 NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3921 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3922 purple_signal_register(plugin, "jabber-sending-text", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3923 purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3924 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3925 purple_value_new_outgoing(PURPLE_TYPE_STRING)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3926 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3927 purple_signal_register(plugin, "jabber-receiving-message", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3928 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3929 purple_value_new(PURPLE_TYPE_BOOLEAN), 6, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3930 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3931 purple_value_new(PURPLE_TYPE_STRING), /* type */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3932 purple_value_new(PURPLE_TYPE_STRING), /* id */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3933 purple_value_new(PURPLE_TYPE_STRING), /* from */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3934 purple_value_new(PURPLE_TYPE_STRING), /* to */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3935 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3936 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3937 purple_signal_register(plugin, "jabber-receiving-iq", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3938 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3939 purple_value_new(PURPLE_TYPE_BOOLEAN), 5, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3940 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3941 purple_value_new(PURPLE_TYPE_STRING), /* type */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3942 purple_value_new(PURPLE_TYPE_STRING), /* id */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3943 purple_value_new(PURPLE_TYPE_STRING), /* from */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3944 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3945 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3946 purple_signal_register(plugin, "jabber-watched-iq", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3947 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3948 purple_value_new(PURPLE_TYPE_BOOLEAN), 5, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3949 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3950 purple_value_new(PURPLE_TYPE_STRING), /* type */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3951 purple_value_new(PURPLE_TYPE_STRING), /* id */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3952 purple_value_new(PURPLE_TYPE_STRING), /* from */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3953 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); /* child */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3954 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3955 purple_signal_register(plugin, "jabber-receiving-presence", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3956 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3957 purple_value_new(PURPLE_TYPE_BOOLEAN), 4, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3958 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3959 purple_value_new(PURPLE_TYPE_STRING), /* type */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3960 purple_value_new(PURPLE_TYPE_STRING), /* from */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3961 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3962 } |
25763
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3963 |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3964 void jabber_plugin_uninit(PurplePlugin *plugin) |
25763
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3965 { |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3966 g_return_if_fail(plugin_ref > 0); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3967 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3968 purple_signals_unregister_by_instance(plugin); |
28893
96ba7fd24177
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents:
28891
diff
changeset
|
3969 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
|
3970 |
29958
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3971 jabber_unregister_commands(plugin); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29957
diff
changeset
|
3972 |
29957
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3973 --plugin_ref; |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3974 if (plugin_ref == 0) |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29956
diff
changeset
|
3975 jabber_do_uninit(); |
25763
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3976 } |