Mercurial > pidgin
annotate libpurple/protocols/jabber/jabber.c @ 32783:6da4f286898c
small German translation update
author | Björn Voigt <bjoern@cs.tu-berlin.de> |
---|---|
date | Fri, 20 Apr 2012 08:03:08 +0000 |
parents | ac43f26c7f61 |
children | a5b556ac1de5 |
rev | line source |
---|---|
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15822 | 2 * purple - Jabber Protocol Plugin |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
28048
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
27981
diff
changeset
|
4 * Purple is the legal property of its developers, whose names are too numerous |
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
27981
diff
changeset
|
5 * to list here. Please refer to the COPYRIGHT file distributed with this |
c585572e80dd
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <paul@darkrain42.org>
parents:
27981
diff
changeset
|
6 * source distribution. |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
7 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
8 * This program is free software; you can redistribute it and/or modify |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
9 * it under the terms of the GNU General Public License as published by |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * the Free Software Foundation; either version 2 of the License, or |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
12 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
13 * This program is distributed in the hope that it will be useful, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
17 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
18 * You should have received a copy of the GNU General Public License |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
19 * along with this program; if not, write to the Free Software |
19681
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19200
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
21 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
22 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
23 #include "internal.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
24 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
25 #include "account.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
26 #include "accountopt.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
27 #include "blist.h" |
26982
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
28 #include "core.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 #include "cmds.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 #include "connection.h" |
15889
87ea711b9781
Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents:
15822
diff
changeset
|
31 #include "conversation.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 #include "debug.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 #include "dnssrv.h" |
25353
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24890
diff
changeset
|
34 #include "imgstore.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
35 #include "message.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 #include "notify.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
37 #include "pluginpref.h" |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
38 #include "privacy.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 #include "proxy.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
40 #include "prpl.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 #include "request.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
42 #include "server.h" |
25686
feea711ac242
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents:
25685
diff
changeset
|
43 #include "status.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
44 #include "util.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
45 #include "version.h" |
15889
87ea711b9781
Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents:
15822
diff
changeset
|
46 #include "xmlnode.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
47 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
48 #include "auth.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
49 #include "buddy.h" |
25985
c4fd9222dda1
propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
50 #include "caps.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
51 #include "chat.h" |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23180
diff
changeset
|
52 #include "data.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
53 #include "disco.h" |
30472
ae615b3d3e47
First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <ml@update.uu.se>
parents:
29630
diff
changeset
|
54 #include "google/google.h" |
ae615b3d3e47
First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <ml@update.uu.se>
parents:
29630
diff
changeset
|
55 #include "google/google_roster.h" |
ae615b3d3e47
First shot at refactoring the Google-specific XMPP code.
Marcus Lundblad <ml@update.uu.se>
parents:
29630
diff
changeset
|
56 #include "google/google_session.h" |
28534
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
57 #include "ibb.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
58 #include "iq.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
59 #include "jutil.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
60 #include "message.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 #include "parser.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
62 #include "presence.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
63 #include "jabber.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
64 #include "roster.h" |
17835
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
65 #include "ping.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
66 #include "si.h" |
29468
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
67 #include "usermood.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
68 #include "xdata.h" |
17834
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17833
diff
changeset
|
69 #include "pep.h" |
17883
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
70 #include "adhoccommands.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
71 |
24938
bd598b606ca4
Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23911
diff
changeset
|
72 #include "jingle/jingle.h" |
bd598b606ca4
Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23911
diff
changeset
|
73 #include "jingle/rtp.h" |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23180
diff
changeset
|
74 |
29492
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
75 #define PING_TIMEOUT 60 |
29772
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
76 /* Send a whitespace keepalive to the server if we haven't sent |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
77 * anything in the last 120 seconds |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
78 */ |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
79 #define DEFAULT_INACTIVITY_TIME 120 |
29492
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
80 |
21538 | 81 GList *jabber_features = NULL; |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
82 GList *jabber_identities = NULL; |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
83 |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
84 static GHashTable *jabber_cmds = NULL; /* PurplePlugin * => GSList of ids */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
85 |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
86 static gint plugin_ref = 0; |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
87 |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
88 static void jabber_unregister_account_cb(JabberStream *js); |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
89 static void try_srv_connect(JabberStream *js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 static void jabber_stream_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
93 char *open_stream; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
94 |
29602
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
29601
diff
changeset
|
95 if (js->stream_id) { |
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
29601
diff
changeset
|
96 g_free(js->stream_id); |
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
29601
diff
changeset
|
97 js->stream_id = NULL; |
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
29601
diff
changeset
|
98 } |
6e598ca344b3
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <paul@darkrain42.org>
parents:
29601
diff
changeset
|
99 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
100 open_stream = g_strdup_printf("<stream:stream to='%s' " |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
101 "xmlns='" NS_XMPP_CLIENT "' " |
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
102 "xmlns:stream='" NS_XMPP_STREAMS "' " |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
103 "version='1.0'>", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
104 js->user->domain); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
105 /* setup the parser fresh for each stream */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
106 jabber_parser_setup(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
107 jabber_send_raw(js, open_stream, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
108 js->reinit = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
109 g_free(open_stream); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
110 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
111 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
112 static void |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
113 jabber_session_initialized_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
114 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
115 xmlnode *packet, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
116 { |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
117 if (type == JABBER_IQ_RESULT) { |
25673
af2b883df9a3
Wait until receiving the roster to tell the core we're logged in
Paul Aurich <paul@darkrain42.org>
parents:
25672
diff
changeset
|
118 jabber_disco_items_server(js); |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
119 if(js->unregistration) |
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
120 jabber_unregister_account_cb(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 } else { |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
122 purple_connection_error_reason(js->gc, |
21358 | 123 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
124 ("Error initializing session")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
126 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
127 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 static void jabber_session_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
130 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 xmlnode *session; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
132 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 jabber_iq_set_callback(iq, jabber_session_initialized_cb, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
134 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
135 session = xmlnode_new_child(iq->node, "session"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
136 xmlnode_set_namespace(session, NS_XMPP_SESSION); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
137 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
139 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
141 static void jabber_bind_result_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
142 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
143 xmlnode *packet, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
145 xmlnode *bind; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
147 if (type == JABBER_IQ_RESULT && |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
148 (bind = xmlnode_get_child_with_namespace(packet, "bind", NS_XMPP_BIND))) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
149 xmlnode *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 char *full_jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 if((jid = xmlnode_get_child(bind, "jid")) && (full_jid = xmlnode_get_data(jid))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
152 jabber_id_free(js->user); |
27793
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
27787
diff
changeset
|
153 |
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
27787
diff
changeset
|
154 js->user = jabber_id_new(full_jid); |
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
27787
diff
changeset
|
155 if (js->user == NULL) { |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
156 purple_connection_error_reason(js->gc, |
21358 | 157 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
158 _("Invalid response from server")); |
27793
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
27787
diff
changeset
|
159 g_free(full_jid); |
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
27787
diff
changeset
|
160 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
161 } |
27793
478a3866ea90
jabber: Stop fall-through on connection error.
Paul Aurich <paul@darkrain42.org>
parents:
27787
diff
changeset
|
162 |
27794
eb2d17945ce3
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents:
27793
diff
changeset
|
163 js->user_jb = jabber_buddy_find(js, full_jid, TRUE); |
eb2d17945ce3
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents:
27793
diff
changeset
|
164 js->user_jb->subscription |= JABBER_SUB_BOTH; |
24216
a61c017d3a99
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24058
diff
changeset
|
165 |
a61c017d3a99
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24058
diff
changeset
|
166 purple_connection_set_display_name(js->gc, full_jid); |
a61c017d3a99
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24058
diff
changeset
|
167 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
168 g_free(full_jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
169 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
170 } else { |
21358 | 171 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
172 char *msg = jabber_parse_error(js, packet, &reason); |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
173 purple_connection_error_reason(js->gc, reason, msg); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
174 g_free(msg); |
29734
b00abe5ec15e
jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <paul@darkrain42.org>
parents:
29696
diff
changeset
|
175 |
b00abe5ec15e
jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <paul@darkrain42.org>
parents:
29696
diff
changeset
|
176 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
177 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
178 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
179 jabber_session_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
180 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
181 |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
182 static char *jabber_prep_resource(char *input) { |
25463
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
183 char hostname[256], /* current hostname */ |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
184 *dot = NULL; |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
185 |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
186 /* Empty resource == don't send any */ |
24869
41e69c65b006
Slightly modified version of a fix fqueze proposed for a crash with the empty
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
24855
diff
changeset
|
187 if (input == NULL || *input == '\0') |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
188 return NULL; |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
189 |
24568
6b9552b09de0
Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
24563
diff
changeset
|
190 if (strstr(input, "__HOSTNAME__") == NULL) |
24585 | 191 return g_strdup(input); |
24568
6b9552b09de0
Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
24563
diff
changeset
|
192 |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
193 /* Replace __HOSTNAME__ with hostname */ |
24560
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
194 if (gethostname(hostname, sizeof(hostname) - 1)) { |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
195 purple_debug_warning("jabber", "gethostname: %s\n", g_strerror(errno)); |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
196 /* according to glibc doc, the only time an error is returned |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
197 is if the hostname is longer than the buffer, in which case |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
198 glibc 2.2+ would still fill the buffer with partial |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
199 hostname, so maybe we want to detect that and use it |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
200 instead |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
201 */ |
31779
514092c20438
Change another hostname lookup fallback to use g_strlcpy.
Ethan Blanton <elb@pidgin.im>
parents:
31704
diff
changeset
|
202 g_strlcpy(hostname, "localhost", sizeof(hostname)); |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
203 } |
24560
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
204 hostname[sizeof(hostname) - 1] = '\0'; |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
205 |
25463
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
206 /* We want only the short hostname, not the FQDN - this will prevent the |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
207 * resource string from being unreasonably long on systems which stuff the |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
208 * whole FQDN in the hostname */ |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
209 if((dot = strchr(hostname, '.'))) |
30409
7c9a4235342c
< QuLogic> on line 208 of jabber.c, should that be *dot?
Paul Aurich <paul@darkrain42.org>
parents:
30322
diff
changeset
|
210 *dot = '\0'; |
25463
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
211 |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
212 return purple_strreplace(input, "__HOSTNAME__", hostname); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
213 } |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
214 |
29861
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
215 static gboolean |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
216 jabber_process_starttls(JabberStream *js, xmlnode *packet) |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
217 { |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
218 PurpleAccount *account; |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
219 xmlnode *starttls; |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
220 |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
221 account = purple_connection_get_account(js->gc); |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
222 |
30579
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
223 #if 0 |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
224 /* |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
225 * This code DOES NOT EXIST, will never be enabled by default, and |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
226 * will never ever be supported (by me). |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
227 * It's literally *only* for developer testing. |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
228 */ |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
229 { |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
230 const gchar *connection_security = purple_account_get_string(account, "connection_security", JABBER_DEFAULT_REQUIRE_TLS); |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
231 if (!g_str_equal(connection_security, "none") && |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
232 purple_ssl_is_supported()) { |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
233 jabber_send_raw(js, |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
234 "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1); |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
235 return TRUE; |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
236 } |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
237 } |
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
238 #else |
30203
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
239 if(purple_ssl_is_supported()) { |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
240 jabber_send_raw(js, |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
241 "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1); |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
242 return TRUE; |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
243 } else { |
30580
27e5213d5da1
Let's make it clear that means locally
Paul Aurich <paul@darkrain42.org>
parents:
30579
diff
changeset
|
244 purple_debug_warning("jabber", "No libpurple TLS/SSL support found."); |
30203
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
245 } |
30579
2235682635d1
jabber: Commit some non-existent code.
Paul Aurich <paul@darkrain42.org>
parents:
30574
diff
changeset
|
246 #endif |
30203
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
247 |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
248 starttls = xmlnode_get_child(packet, "starttls"); |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
249 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:
30195
diff
changeset
|
250 purple_connection_error_reason(js->gc, |
29861
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
251 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
252 _("Server requires TLS/SSL, but no TLS/SSL support was found.")); |
30203
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
253 return TRUE; |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
254 } |
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
255 |
30462
8084631e2e84
jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents:
30448
diff
changeset
|
256 if (g_str_equal("require_tls", purple_account_get_string(account, "connection_security", JABBER_DEFAULT_REQUIRE_TLS))) { |
30203
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
257 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:
30195
diff
changeset
|
258 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
29861
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
259 _("You require encryption, but no TLS/SSL support was found.")); |
30203
07f716427b50
We've already checked for the existance of the starttls node, so we know
Mark Doliner <mark@kingant.net>
parents:
30195
diff
changeset
|
260 return TRUE; |
29861
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
261 } |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
262 |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
263 return FALSE; |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
264 } |
417a4e912738
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <paul@darkrain42.org>
parents:
29860
diff
changeset
|
265 |
25049
f775f6021654
* using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25044
diff
changeset
|
266 void jabber_stream_features_parse(JabberStream *js, xmlnode *packet) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
267 { |
30462
8084631e2e84
jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents:
30448
diff
changeset
|
268 PurpleAccount *account = purple_connection_get_account(js->gc); |
8084631e2e84
jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents:
30448
diff
changeset
|
269 const char *connection_security = |
8084631e2e84
jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents:
30448
diff
changeset
|
270 purple_account_get_string(account, "connection_security", JABBER_DEFAULT_REQUIRE_TLS); |
8084631e2e84
jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents:
30448
diff
changeset
|
271 |
8084631e2e84
jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents:
30448
diff
changeset
|
272 if (xmlnode_get_child(packet, "starttls")) { |
8084631e2e84
jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents:
30448
diff
changeset
|
273 if (jabber_process_starttls(js, packet)) { |
28327
c7aaad89a2f8
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents:
28314
diff
changeset
|
274 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
275 return; |
28327
c7aaad89a2f8
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents:
28314
diff
changeset
|
276 } |
30462
8084631e2e84
jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents:
30448
diff
changeset
|
277 } else if (g_str_equal(connection_security, "require_tls") && !jabber_stream_is_ssl(js)) { |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
278 purple_connection_error_reason(js->gc, |
21358 | 279 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
280 _("You require encryption, but it is not available on this server.")); |
17896
a8420fd18545
Added an option to require SSL or TLS when connecting to an XMPP server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17894
diff
changeset
|
281 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
282 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
283 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
284 if(js->registration) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
285 jabber_register_start(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
286 } else if(xmlnode_get_child(packet, "mechanisms")) { |
28327
c7aaad89a2f8
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents:
28314
diff
changeset
|
287 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
288 jabber_auth_start(js, packet); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
289 } else if(xmlnode_get_child(packet, "bind")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
290 xmlnode *bind, *resource; |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
291 char *requested_resource; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
293 bind = xmlnode_new_child(iq->node, "bind"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
294 xmlnode_set_namespace(bind, NS_XMPP_BIND); |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
295 requested_resource = jabber_prep_resource(js->user->resource); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
296 |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
297 if (requested_resource != NULL) { |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
298 resource = xmlnode_new_child(bind, "resource"); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
299 xmlnode_insert_data(resource, requested_resource, -1); |
24666
641fe4c2b2a5
Use g_free instead of free.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24585
diff
changeset
|
300 g_free(requested_resource); |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
301 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
302 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
303 jabber_iq_set_callback(iq, jabber_bind_result_cb, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
304 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
305 jabber_iq_send(iq); |
28760
0f7025534fc5
jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents:
28758
diff
changeset
|
306 } else if (xmlnode_get_child_with_namespace(packet, "ver", NS_ROSTER_VERSIONING)) { |
0f7025534fc5
jabber: Roster Versioning support.
Paul Aurich <paul@darkrain42.org>
parents:
28758
diff
changeset
|
307 js->server_caps |= JABBER_CAP_ROSTER_VERSIONING; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
308 } else /* if(xmlnode_get_child_with_namespace(packet, "auth")) */ { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
309 /* If we get an empty stream:features packet, or we explicitly get |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
310 * an auth feature with namespace http://jabber.org/features/iq-auth |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
311 * we should revert back to iq:auth authentication, even though we're |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
312 * connecting to an XMPP server. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
313 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING); |
28696
8ada06fb65ed
jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents:
28517
diff
changeset
|
314 jabber_auth_start_old(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
315 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
316 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
317 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
318 static void jabber_stream_handle_error(JabberStream *js, xmlnode *packet) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
319 { |
21358 | 320 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR; |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
321 char *msg = jabber_parse_error(js, packet, &reason); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
322 |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
323 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
|
324 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
325 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
326 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
327 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
328 static void tls_init(JabberStream *js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
329 |
17894
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
330 void jabber_process_packet(JabberStream *js, xmlnode **packet) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
331 { |
29601
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
332 const char *name; |
15917 | 333 const char *xmlns; |
334 | |
28517
96ba7fd24177
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents:
28515
diff
changeset
|
335 purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-receiving-xmlnode", js->gc, packet); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
336 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
337 /* if the signal leaves us with a null packet, we're done */ |
17894
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
338 if(NULL == *packet) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
339 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
340 |
29601
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
341 name = (*packet)->name; |
17894
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
342 xmlns = xmlnode_get_namespace(*packet); |
15917 | 343 |
17894
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
344 if(!strcmp((*packet)->name, "iq")) { |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
345 jabber_iq_parse(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
346 } else if(!strcmp((*packet)->name, "presence")) { |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
347 jabber_presence_parse(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
348 } else if(!strcmp((*packet)->name, "message")) { |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
349 jabber_message_parse(js, *packet); |
29601
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
350 } else if (purple_strequal(xmlns, NS_XMPP_STREAMS)) { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
351 if (g_str_equal(name, "features")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
352 jabber_stream_features_parse(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
353 else if (g_str_equal(name, "error")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
354 jabber_stream_handle_error(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
355 } else if (purple_strequal(xmlns, NS_XMPP_SASL)) { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
356 if (js->state != JABBER_STREAM_AUTHENTICATING) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
357 purple_debug_warning("jabber", "Ignoring spurious SASL stanza %s\n", name); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
358 else { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
359 if (g_str_equal(name, "challenge")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
360 jabber_auth_handle_challenge(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
361 else if (g_str_equal(name, "success")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
362 jabber_auth_handle_success(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
363 else if (g_str_equal(name, "failure")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
364 jabber_auth_handle_failure(js, *packet); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
365 } |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
366 } else if (purple_strequal(xmlns, NS_XMPP_TLS)) { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
367 if (js->state != JABBER_STREAM_INITIALIZING_ENCRYPTION || js->gsc) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
368 purple_debug_warning("jabber", "Ignoring spurious %s\n", name); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
369 else { |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
370 if (g_str_equal(name, "proceed")) |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
371 tls_init(js); |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
372 /* TODO: Handle <failure/>, I guess? */ |
f5f3c5134eb7
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <paul@darkrain42.org>
parents:
29573
diff
changeset
|
373 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
374 } else { |
28513
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28512
diff
changeset
|
375 purple_debug_warning("jabber", "Unknown packet: %s\n", (*packet)->name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
376 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
377 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
378 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
379 static int jabber_do_send(JabberStream *js, const char *data, int len) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
380 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
381 int ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
382 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
383 if (js->gsc) |
15822 | 384 ret = purple_ssl_write(js->gsc, data, len); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
385 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
386 ret = write(js->fd, data, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
387 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
388 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
389 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
390 |
15822 | 391 static void jabber_send_cb(gpointer data, gint source, PurpleInputCondition cond) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
392 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
393 JabberStream *js = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
394 int ret, writelen; |
15822 | 395 writelen = purple_circ_buffer_get_max_read(js->write_buffer); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
396 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
397 if (writelen == 0) { |
15822 | 398 purple_input_remove(js->writeh); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
399 js->writeh = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
400 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
401 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
402 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
403 ret = jabber_do_send(js, js->write_buffer->outptr, writelen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
404 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
405 if (ret < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
406 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
407 else if (ret <= 0) { |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
408 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"), |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
409 g_strerror(errno)); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
410 purple_connection_error_reason(js->gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
411 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
412 g_free(tmp); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
413 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
414 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
415 |
15822 | 416 purple_circ_buffer_mark_read(js->write_buffer, ret); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
417 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
418 |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
419 static gboolean do_jabber_send_raw(JabberStream *js, const char *data, int len) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
420 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
421 int ret; |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
422 gboolean success = TRUE; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
423 |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
424 g_return_val_if_fail(len > 0, FALSE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
425 |
29772
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
426 if (js->state == JABBER_STREAM_CONNECTED) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
427 jabber_stream_restart_inactivity_timer(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
428 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
429 if (js->writeh == 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
430 ret = jabber_do_send(js, data, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
431 else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
432 ret = -1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
433 errno = EAGAIN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
434 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
435 |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
436 if (ret < 0 && errno != EAGAIN) { |
28941
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
437 PurpleAccount *account = purple_connection_get_account(js->gc); |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
438 /* |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
439 * The server may have closed the socket (on a stream error), so if |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
440 * we're disconnecting, don't generate (possibly another) error that |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
441 * (for some UIs) would mask the first. |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
442 */ |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
443 if (!account->disconnecting) { |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
444 gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"), |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
445 g_strerror(errno)); |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
446 purple_connection_error_reason(js->gc, |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
447 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
448 g_free(tmp); |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
449 } |
9cdf9bc6c1ed
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <paul@darkrain42.org>
parents:
28901
diff
changeset
|
450 |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
451 success = FALSE; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
452 } else if (ret < len) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
453 if (ret < 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
454 ret = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
455 if (js->writeh == 0) |
15822 | 456 js->writeh = purple_input_add( |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
457 js->gsc ? js->gsc->fd : js->fd, |
15822 | 458 PURPLE_INPUT_WRITE, jabber_send_cb, js); |
459 purple_circ_buffer_append(js->write_buffer, | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
460 data + ret, len - ret); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
461 } |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
462 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
463 return success; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
464 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
465 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
466 void jabber_send_raw(JabberStream *js, const char *data, int len) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
467 { |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
468 PurpleConnection *gc; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
469 PurpleAccount *account; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
470 |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
471 gc = js->gc; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
472 account = purple_connection_get_account(gc); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
473 |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
474 /* because printing a tab to debug every minute gets old */ |
24890
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
475 if(strcmp(data, "\t")) { |
28512
562fd22dbe89
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents:
28438
diff
changeset
|
476 const char *username; |
24890
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
477 char *text = NULL, *last_part = NULL, *tag_start = NULL; |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
478 |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
479 /* Because debug logs with plaintext passwords make me sad */ |
30929
b07841f6cd15
jabber: Print out plaintext-equivalent passwords when PURPLE_UNSAFE_DEBUG is set.
Paul Aurich <paul@darkrain42.org>
parents:
30604
diff
changeset
|
480 if (!purple_debug_is_unsafe() && js->state != JABBER_STREAM_CONNECTED && |
24890
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
481 /* Either <auth> or <query><password>... */ |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
482 (((tag_start = strstr(data, "<auth ")) && |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
483 strstr(data, "xmlns='" NS_XMPP_SASL "'")) || |
24890
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
484 ((tag_start = strstr(data, "<query ")) && |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
485 strstr(data, "xmlns='jabber:iq:auth'>") && |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
486 (tag_start = strstr(tag_start, "<password>"))))) { |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
487 char *data_start, *tag_end = strchr(tag_start, '>'); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
488 text = g_strdup(data); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
489 |
25599
b9a90f34b780
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25587
diff
changeset
|
490 /* Better to print out some wacky debugging than crash |
b9a90f34b780
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25587
diff
changeset
|
491 * due to a plugin sending bad xml */ |
b9a90f34b780
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25587
diff
changeset
|
492 if (tag_end == NULL) |
b9a90f34b780
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25587
diff
changeset
|
493 tag_end = tag_start; |
b9a90f34b780
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25587
diff
changeset
|
494 |
24890
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
495 data_start = text + (tag_end - data) + 1; |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
496 |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
497 last_part = strchr(data_start, '<'); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
498 *data_start = '\0'; |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
499 } |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
500 |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
501 username = purple_connection_get_display_name(gc); |
28512
562fd22dbe89
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents:
28438
diff
changeset
|
502 if (!username) |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
503 username = purple_account_get_username(account); |
28512
562fd22dbe89
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents:
28438
diff
changeset
|
504 |
562fd22dbe89
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents:
28438
diff
changeset
|
505 purple_debug_misc("jabber", "Sending%s (%s): %s%s%s\n", |
562fd22dbe89
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents:
28438
diff
changeset
|
506 jabber_stream_is_ssl(js) ? " (ssl)" : "", username, |
562fd22dbe89
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <paul@darkrain42.org>
parents:
28438
diff
changeset
|
507 text ? text : data, |
24890
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
508 last_part ? "password removed" : "", |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
509 last_part ? last_part : ""); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
510 |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
511 g_free(text); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
512 } |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
513 |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
514 purple_signal_emit(purple_connection_get_prpl(gc), "jabber-sending-text", gc, &data); |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
515 if (data == NULL) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
516 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
517 |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
518 if (len == -1) |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
519 len = strlen(data); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
520 |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
521 /* If we've got a security layer, we need to encode the data, |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
522 * splitting it on the maximum buffer length negotiated */ |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
523 #ifdef HAVE_CYRUS_SASL |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
524 if (js->sasl_maxbuf>0) { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
525 int pos = 0; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
526 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
527 if (!js->gsc && js->fd<0) |
29858
2829dd1cc118
jabber: I don't see how this is possible, and it looks like an error to me.
Paul Aurich <paul@darkrain42.org>
parents:
29855
diff
changeset
|
528 g_return_if_reached(); |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
529 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
530 while (pos < len) { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
531 int towrite; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
532 const char *out; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
533 unsigned olen; |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
534 int rc; |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
535 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
536 towrite = MIN((len - pos), js->sasl_maxbuf); |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
537 |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
538 rc = sasl_encode(js->sasl, &data[pos], towrite, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
539 &out, &olen); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
540 if (rc != SASL_OK) { |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
541 gchar *error = |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
542 g_strdup_printf(_("SASL error: %s"), |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
543 sasl_errdetail(js->sasl)); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
544 purple_debug_error("jabber", |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
545 "sasl_encode error %d: %s\n", rc, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
546 sasl_errdetail(js->sasl)); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
547 purple_connection_error_reason(gc, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
548 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
549 error); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
550 g_free(error); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
551 return; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
552 } |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
553 pos += towrite; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
554 |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
555 /* do_jabber_send_raw returns FALSE when it throws a |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
556 * connection error. |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
557 */ |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
558 if (!do_jabber_send_raw(js, out, olen)) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
559 break; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
560 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
561 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
562 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
563 #endif |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
564 |
27787
53f0956f76dc
jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents:
27778
diff
changeset
|
565 if (js->bosh) |
26448
d4af753e0e33
Pass all messages to BOSH as text, so they pass through the sending-text
Paul Aurich <paul@darkrain42.org>
parents:
26447
diff
changeset
|
566 jabber_bosh_connection_send_raw(js->bosh, data); |
25182
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
567 else |
25125
907ca9a36fe0
explicit merge of '714a7c7f903d11c96ffade34966121da549d998f'
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
568 do_jabber_send_raw(js, data, len); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
569 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
570 |
16240
547c76fe2e7a
This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@gmail.com>
parents:
16068
diff
changeset
|
571 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
572 { |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
573 JabberStream *js = purple_connection_get_protocol_data(gc); |
30195
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
29861
diff
changeset
|
574 |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
29861
diff
changeset
|
575 g_return_val_if_fail(js != NULL, -1); |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
29861
diff
changeset
|
576 /* TODO: It's probably worthwhile to restrict this to when the account |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
29861
diff
changeset
|
577 * state is CONNECTED, but I can /almost/ envision reasons for wanting |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
29861
diff
changeset
|
578 * to do things during the connection process. |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
29861
diff
changeset
|
579 */ |
92a5d4b38f21
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <paul@darkrain42.org>
parents:
29861
diff
changeset
|
580 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
581 jabber_send_raw(js, buf, len); |
31704
4f1bd59cb90a
jabber: Make jabber_prpl_send_raw() return strlen(buf) when len is negative.
Paul Aurich <paul@darkrain42.org>
parents:
31481
diff
changeset
|
582 return (len < 0 ? strlen(buf) : len); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
583 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
584 |
27006
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
585 void jabber_send_signal_cb(PurpleConnection *pc, xmlnode **packet, |
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
586 gpointer unused) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
587 { |
27663
e8e056876e39
Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents:
27656
diff
changeset
|
588 JabberStream *js; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
589 char *txt; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
590 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
591 |
27006
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
592 if (NULL == packet) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
593 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
594 |
30322
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30259
diff
changeset
|
595 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(pc)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
596 |
27663
e8e056876e39
Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents:
27656
diff
changeset
|
597 js = purple_connection_get_protocol_data(pc); |
28640
7622d3f86752
Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents:
28592
diff
changeset
|
598 |
7622d3f86752
Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents:
28592
diff
changeset
|
599 if (NULL == js) |
7622d3f86752
Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents:
28592
diff
changeset
|
600 return; |
7622d3f86752
Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <stu@nosnilmot.com>
parents:
28592
diff
changeset
|
601 |
27787
53f0956f76dc
jabber: Remove js->use_bosh
Paul Aurich <paul@darkrain42.org>
parents:
27778
diff
changeset
|
602 if (js->bosh) |
27663
e8e056876e39
Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents:
27656
diff
changeset
|
603 if (g_str_equal((*packet)->name, "message") || |
e8e056876e39
Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents:
27656
diff
changeset
|
604 g_str_equal((*packet)->name, "iq") || |
e8e056876e39
Set the namespace properly on stanzas for BOSH.
Paul Aurich <paul@darkrain42.org>
parents:
27656
diff
changeset
|
605 g_str_equal((*packet)->name, "presence")) |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
606 xmlnode_set_namespace(*packet, NS_XMPP_CLIENT); |
27006
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
607 txt = xmlnode_to_str(*packet, &len); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
608 jabber_send_raw(js, txt, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
609 g_free(txt); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
610 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
611 |
27006
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
612 void jabber_send(JabberStream *js, xmlnode *packet) |
21859
e13609ce4548
Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@gmail.com>
parents:
21814
diff
changeset
|
613 { |
28517
96ba7fd24177
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents:
28515
diff
changeset
|
614 purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-sending-xmlnode", js->gc, &packet); |
21859
e13609ce4548
Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@gmail.com>
parents:
21814
diff
changeset
|
615 } |
e13609ce4548
Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@gmail.com>
parents:
21814
diff
changeset
|
616 |
25640
42dd7e591031
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents:
25412
diff
changeset
|
617 static gboolean jabber_keepalive_timeout(PurpleConnection *gc) |
21859
e13609ce4548
Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@gmail.com>
parents:
21814
diff
changeset
|
618 { |
21973
966f98d4b04b
Masca noticed that dc6923294f5f33ff7a52a998e1b9e9ad47be0211 made jabber.c not
Will Thompson <will.thompson@collabora.co.uk>
parents:
21964
diff
changeset
|
619 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
|
620 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
621 _("Ping timed out")); |
27069
08f5c5b12e7c
The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents:
27055
diff
changeset
|
622 js->keepalive_timeout = 0; |
21859
e13609ce4548
Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@gmail.com>
parents:
21814
diff
changeset
|
623 return FALSE; |
e13609ce4548
Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@gmail.com>
parents:
21814
diff
changeset
|
624 } |
e13609ce4548
Send XMPP Pings to the server instead of whitespace for our keepalives. Timeout the connection if there's no response in 20 seconds
Sean Egan <seanegan@gmail.com>
parents:
21814
diff
changeset
|
625 |
16240
547c76fe2e7a
This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@gmail.com>
parents:
16068
diff
changeset
|
626 void jabber_keepalive(PurpleConnection *gc) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
627 { |
29492
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
628 JabberStream *js = purple_connection_get_protocol_data(gc); |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
629 time_t now = time(NULL); |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
630 |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
631 if (js->keepalive_timeout == 0 && (now - js->last_ping) >= PING_TIMEOUT) { |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
632 js->last_ping = now; |
0d3151a41134
jabber: Don't ping more often than once a minute.
Paul Aurich <paul@darkrain42.org>
parents:
29473
diff
changeset
|
633 |
26917
6b0e150f2276
Stop trying to be clever with XMPP keepalive pings.
Paul Aurich <paul@darkrain42.org>
parents:
26874
diff
changeset
|
634 jabber_keepalive_ping(js); |
25640
42dd7e591031
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents:
25412
diff
changeset
|
635 js->keepalive_timeout = purple_timeout_add_seconds(120, |
42dd7e591031
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents:
25412
diff
changeset
|
636 (GSourceFunc)(jabber_keepalive_timeout), gc); |
22459
8ec6ac1b9e26
Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evan.s@dreskin.net>
parents:
22443
diff
changeset
|
637 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
638 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
639 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
640 static void |
15822 | 641 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc, |
642 PurpleInputCondition cond) | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
643 { |
15822 | 644 PurpleConnection *gc = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
645 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
646 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
647 static char buf[4096]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
648 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
649 /* TODO: It should be possible to make this check unnecessary */ |
15822 | 650 if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
651 purple_ssl_close(gsc); | |
30322
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30259
diff
changeset
|
652 g_return_if_reached(); |
15373
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 |
15822 | 655 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
|
656 gc->last_received = time(NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
657 buf[len] = '\0'; |
28513
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28512
diff
changeset
|
658 purple_debug_info("jabber", "Recv (ssl)(%d): %s\n", len, buf); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
659 jabber_parser_process(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
660 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
661 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
662 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
663 |
23396
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
664 if(len < 0 && errno == EAGAIN) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
665 return; |
23396
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
666 else { |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
667 gchar *tmp; |
23396
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
668 if (len == 0) |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
669 tmp = g_strdup_printf(_("Server closed the connection")); |
23396
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
670 else |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
671 tmp = g_strdup_printf(_("Lost connection with server: %s"), |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
672 g_strerror(errno)); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
673 purple_connection_error_reason(js->gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
674 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
675 g_free(tmp); |
23396
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
676 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
677 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
678 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
679 static void |
15822 | 680 jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
681 { |
15822 | 682 PurpleConnection *gc = data; |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
683 JabberStream *js = purple_connection_get_protocol_data(gc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
684 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
685 static char buf[4096]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
686 |
30322
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30259
diff
changeset
|
687 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
688 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
689 if((len = read(js->fd, buf, sizeof(buf) - 1)) > 0) { |
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
|
690 gc->last_received = time(NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
691 #ifdef HAVE_CYRUS_SASL |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
692 if (js->sasl_maxbuf > 0) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
693 const char *out; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
694 unsigned int olen; |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
695 int rc; |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
696 |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
697 rc = sasl_decode(js->sasl, buf, len, &out, &olen); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
698 if (rc != SASL_OK) { |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
699 gchar *error = |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
700 g_strdup_printf(_("SASL error: %s"), |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
701 sasl_errdetail(js->sasl)); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
702 purple_debug_error("jabber", |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
703 "sasl_decode_error %d: %s\n", rc, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
704 sasl_errdetail(js->sasl)); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
705 purple_connection_error_reason(gc, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
706 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
707 error); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
708 } else if (olen > 0) { |
28513
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28512
diff
changeset
|
709 purple_debug_info("jabber", "RecvSASL (%u): %s\n", olen, out); |
29860
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
710 jabber_parser_process(js, out, olen); |
3a5194c70b38
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <paul@darkrain42.org>
parents:
29858
diff
changeset
|
711 if (js->reinit) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
712 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
713 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
714 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
715 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
716 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
717 buf[len] = '\0'; |
28513
fa7f3426ed13
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <paul@darkrain42.org>
parents:
28512
diff
changeset
|
718 purple_debug_info("jabber", "Recv (%d): %s\n", len, buf); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
719 jabber_parser_process(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
720 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
721 jabber_stream_init(js); |
23396
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
722 } else if(len < 0 && errno == EAGAIN) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
723 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
724 } else { |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
725 gchar *tmp; |
23396
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
726 if (len == 0) |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
727 tmp = g_strdup_printf(_("Server closed the connection")); |
23396
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
728 else |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
729 tmp = g_strdup_printf(_("Lost connection with server: %s"), |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
730 g_strerror(errno)); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
731 purple_connection_error_reason(js->gc, |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
732 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
733 g_free(tmp); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
734 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
735 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
736 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
737 static void |
15822 | 738 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc, |
739 PurpleInputCondition cond) | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
740 { |
15822 | 741 PurpleConnection *gc = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
742 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
743 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
744 /* TODO: It should be possible to make this check unnecessary */ |
15822 | 745 if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
746 purple_ssl_close(gsc); | |
30322
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30259
diff
changeset
|
747 g_return_if_reached(); |
19999
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19723
diff
changeset
|
748 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
749 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
750 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
751 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
752 if(js->state == JABBER_STREAM_CONNECTING) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
753 jabber_send_raw(js, "<?xml version='1.0' ?>", -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
754 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
15822 | 755 purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
756 |
17879
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
757 /* Tell the app that we're doing encryption */ |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
758 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
759 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
760 |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
761 static void |
27349
a71cc338f0fd
A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents:
27347
diff
changeset
|
762 txt_resolved_cb(GList *responses, gpointer data) |
25038
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25035
diff
changeset
|
763 { |
25181
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25180
diff
changeset
|
764 JabberStream *js = data; |
30604
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
765 gboolean found = FALSE; |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
766 |
25180
1516525c86fa
Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents:
25179
diff
changeset
|
767 js->srv_query_data = NULL; |
1516525c86fa
Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents:
25179
diff
changeset
|
768 |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
769 while (responses) { |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
770 PurpleTxtResponse *resp = responses->data; |
25039
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
771 gchar **token; |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
772 token = g_strsplit(purple_txt_response_get_content(resp), "=", 2); |
25039
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
773 if (!strcmp(token[0], "_xmpp-client-xbosh")) { |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
774 purple_debug_info("jabber","Found alternative connection method using %s at %s.\n", token[0], token[1]); |
25181
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25180
diff
changeset
|
775 js->bosh = jabber_bosh_connection_init(js, token[1]); |
25039
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
776 g_strfreev(token); |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
777 break; |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
778 } |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
779 g_strfreev(token); |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
780 purple_txt_response_destroy(resp); |
27349
a71cc338f0fd
A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents:
27347
diff
changeset
|
781 responses = g_list_delete_link(responses, responses); |
25038
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25035
diff
changeset
|
782 } |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
783 |
25181
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25180
diff
changeset
|
784 if (js->bosh) { |
30604
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
785 found = TRUE; |
25181
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25180
diff
changeset
|
786 jabber_bosh_connection_connect(js->bosh); |
30604
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
787 } |
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
788 |
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
789 if (!found) { |
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
790 purple_debug_warning("jabber", "Unable to find alternative XMPP connection " |
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
791 "methods after failing to connect directly.\n"); |
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
792 purple_connection_error_reason(js->gc, |
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
793 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
794 _("Unable to connect")); |
bc0bccdbc28f
jabber: Handle a corner case better by throwing an error instead of stalling
Paul Aurich <paul@darkrain42.org>
parents:
30597
diff
changeset
|
795 return; |
25042
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25039
diff
changeset
|
796 } |
26589
400f74b95c0e
First crack at Win32 TXT DNS query code and don't leak the PurpleTxtResponses
Paul Aurich <paul@darkrain42.org>
parents:
26588
diff
changeset
|
797 |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
798 if (responses) { |
27349
a71cc338f0fd
A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents:
27347
diff
changeset
|
799 g_list_foreach(responses, (GFunc)purple_txt_response_destroy, NULL); |
a71cc338f0fd
A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <pidgin@unreliablesource.net>
parents:
27347
diff
changeset
|
800 g_list_free(responses); |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
801 } |
25038
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25035
diff
changeset
|
802 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
803 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
804 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
805 jabber_login_callback(gpointer data, gint source, const gchar *error) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
806 { |
15822 | 807 PurpleConnection *gc = data; |
28901
4189f9e1627b
jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents:
28900
diff
changeset
|
808 JabberStream *js = purple_connection_get_protocol_data(gc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
809 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
810 if (source < 0) { |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
811 if (js->srv_rec != NULL) { |
28901
4189f9e1627b
jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents:
28900
diff
changeset
|
812 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record or connecting directly.\n", error); |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
813 try_srv_connect(js); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
814 } else { |
28901
4189f9e1627b
jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <paul@darkrain42.org>
parents:
28900
diff
changeset
|
815 purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain); |
31481
b671728e6ee9
Use the new account-contextual DNS API everywhere. Refs #11110
Daniel Atallah <daniel.atallah@gmail.com>
parents:
31314
diff
changeset
|
816 js->srv_query_data = purple_txt_resolve_account( |
b671728e6ee9
Use the new account-contextual DNS API everywhere. Refs #11110
Daniel Atallah <daniel.atallah@gmail.com>
parents:
31314
diff
changeset
|
817 purple_connection_get_account(gc), "_xmppconnect", |
27635
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27613
diff
changeset
|
818 js->user->domain, txt_resolved_cb, js); |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
819 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
820 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
821 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
822 |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
823 g_free(js->srv_rec); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
824 js->srv_rec = NULL; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
825 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
826 js->fd = source; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
827 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
828 if(js->state == JABBER_STREAM_CONNECTING) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
829 jabber_send_raw(js, "<?xml version='1.0' ?>", -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
830 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
831 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
15822 | 832 gc->inpa = purple_input_add(js->fd, PURPLE_INPUT_READ, jabber_recv_cb, gc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
833 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
834 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
835 static void |
15822 | 836 jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
837 gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
838 { |
15822 | 839 PurpleConnection *gc = data; |
15606
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15497
diff
changeset
|
840 JabberStream *js; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
841 |
15606
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15497
diff
changeset
|
842 /* If the connection is already disconnected, we don't need to do anything else */ |
30322
2244a84407a4
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <paul@darkrain42.org>
parents:
30259
diff
changeset
|
843 g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); |
15606
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15497
diff
changeset
|
844 |
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15497
diff
changeset
|
845 js = gc->proto_data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
846 js->gsc = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
847 |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
848 purple_connection_ssl_error (gc, error); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
849 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
850 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
851 static void tls_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
852 { |
15822 | 853 purple_input_remove(js->gc->inpa); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
854 js->gc->inpa = 0; |
18929
67cb28c0ec89
applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18163
diff
changeset
|
855 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
|
856 jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc); |
27656
96c38fe2cb00
Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <paul@darkrain42.org>
parents:
27635
diff
changeset
|
857 /* The fd is no longer our concern */ |
96c38fe2cb00
Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <paul@darkrain42.org>
parents:
27635
diff
changeset
|
858 js->fd = -1; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
859 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
860 |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
861 static gboolean jabber_login_connect(JabberStream *js, const char *domain, const char *host, int port, |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
862 gboolean fatal_failure) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
863 { |
22337
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
864 /* host should be used in preference to domain to |
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
865 * allow SASL authentication to work with FQDN of the server, |
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
866 * but we use domain as fallback for when users enter IP address |
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
867 * in connect server */ |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
868 g_free(js->serverFQDN); |
22337
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
869 if (purple_ip_address_is_valid(host)) |
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
870 js->serverFQDN = g_strdup(domain); |
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
871 else |
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
872 js->serverFQDN = g_strdup(host); |
15765
51dd9ae01585
pass the correct domain to cyrus sasl (sf patch 1663064)
Nathan Walp <nwalp@pidgin.im>
parents:
15728
diff
changeset
|
873 |
27613
5f17bfa9dc70
To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents:
27608
diff
changeset
|
874 if (purple_proxy_connect(js->gc, purple_connection_get_account(js->gc), |
5f17bfa9dc70
To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents:
27608
diff
changeset
|
875 host, port, jabber_login_callback, js->gc) == NULL) { |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
876 if (fatal_failure) { |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
877 purple_connection_error_reason(js->gc, |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
878 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
27381
f541583e31bd
More uniformity among disconnect error messages
Mark Doliner <mark@kingant.net>
parents:
27349
diff
changeset
|
879 _("Unable to connect")); |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
880 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
881 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
882 return FALSE; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
883 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
884 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
885 return TRUE; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
886 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
887 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
888 static void try_srv_connect(JabberStream *js) |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
889 { |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
890 while (js->srv_rec != NULL && js->srv_rec_idx < js->max_srv_rec_idx) { |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
891 PurpleSrvResponse *tmp_resp = js->srv_rec + (js->srv_rec_idx++); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
892 if (jabber_login_connect(js, tmp_resp->hostname, tmp_resp->hostname, tmp_resp->port, FALSE)) |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
893 return; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
894 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
895 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
896 g_free(js->srv_rec); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
897 js->srv_rec = NULL; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
898 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
899 /* Fall back to the defaults (I'm not sure if we should actually do this) */ |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
900 jabber_login_connect(js, js->user->domain, js->user->domain, |
27613
5f17bfa9dc70
To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents:
27608
diff
changeset
|
901 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222), |
27635
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27613
diff
changeset
|
902 TRUE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
903 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
904 |
15822 | 905 static void srv_resolved_cb(PurpleSrvResponse *resp, int results, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
906 { |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
907 JabberStream *js = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
908 js->srv_query_data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
909 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
910 if(results) { |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
911 js->srv_rec = resp; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
912 js->srv_rec_idx = 0; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
913 js->max_srv_rec_idx = results; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
914 try_srv_connect(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
915 } else { |
16996 | 916 jabber_login_connect(js, js->user->domain, js->user->domain, |
27613
5f17bfa9dc70
To make grim happy (or more upset).
Paul Aurich <paul@darkrain42.org>
parents:
27608
diff
changeset
|
917 purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222), |
27635
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27613
diff
changeset
|
918 TRUE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
919 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
920 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
921 |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
922 static JabberStream * |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
923 jabber_stream_new(PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
924 { |
15822 | 925 PurpleConnection *gc = purple_account_get_connection(account); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
926 JabberStream *js; |
25686
feea711ac242
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents:
25685
diff
changeset
|
927 PurplePresence *presence; |
31312
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
928 gchar *user; |
27607
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27599
diff
changeset
|
929 gchar *slash; |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
930 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
931 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
|
932 js->gc = gc; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
933 js->fd = -1; |
27607
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27599
diff
changeset
|
934 |
31312
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
935 user = g_strdup(purple_account_get_username(account)); |
27607
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27599
diff
changeset
|
936 /* jabber_id_new doesn't accept "user@domain/" as valid */ |
31312
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
937 slash = strchr(user, '/'); |
27607
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27599
diff
changeset
|
938 if (slash && *(slash + 1) == '\0') |
f95bcb5eb047
Support connecting to IDNA XMPP domains.
Paul Aurich <paul@darkrain42.org>
parents:
27599
diff
changeset
|
939 *slash = '\0'; |
31312
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
940 js->user = jabber_id_new(user); |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
941 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
942 if (!js->user) { |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
943 purple_connection_error_reason(gc, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
944 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
945 _("Invalid XMPP ID")); |
31312
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
946 g_free(user); |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
947 /* Destroying the connection will free the JabberStream */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
948 return NULL; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
949 } |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
950 |
29696
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
29630
diff
changeset
|
951 if (!js->user->node || *(js->user->node) == '\0') { |
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
29630
diff
changeset
|
952 purple_connection_error_reason(gc, |
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
29630
diff
changeset
|
953 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
08957bb38e30
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <paul@darkrain42.org>
parents:
29630
diff
changeset
|
954 _("Invalid XMPP ID. Username portion must be set.")); |
31312
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
955 g_free(user); |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
956 /* Destroying the connection will free the JabberStream */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
957 return NULL; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
958 } |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
959 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
960 if (!js->user->domain || *(js->user->domain) == '\0') { |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
961 purple_connection_error_reason(gc, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
962 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
963 _("Invalid XMPP ID. Domain must be set.")); |
31312
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
964 g_free(user); |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
965 /* Destroying the connection will free the JabberStream */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
966 return NULL; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
967 } |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
968 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
969 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
|
970 g_free, (GDestroyNotify)jabber_buddy_free); |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
971 |
30597
adce8f13a749
jabber: Set a connection display name even when using legacy auth
Paul Aurich <paul@darkrain42.org>
parents:
30580
diff
changeset
|
972 /* This is overridden during binding, but we need it here |
adce8f13a749
jabber: Set a connection display name even when using legacy auth
Paul Aurich <paul@darkrain42.org>
parents:
30580
diff
changeset
|
973 * in case the server only does legacy non-sasl auth!. |
adce8f13a749
jabber: Set a connection display name even when using legacy auth
Paul Aurich <paul@darkrain42.org>
parents:
30580
diff
changeset
|
974 */ |
31312
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
975 purple_connection_set_display_name(gc, user); |
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
976 |
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
977 js->user_jb = jabber_buddy_find(js, user, TRUE); |
d2962c2d7791
disapproval of revision '385542a8270ac30d2121b533494264a28cd04423'
Mark Doliner <mark@kingant.net>
parents:
31310
diff
changeset
|
978 g_free(user); |
27794
eb2d17945ce3
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents:
27793
diff
changeset
|
979 if (!js->user_jb) { |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
980 /* This basically *can't* fail, but for good measure... */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
981 purple_connection_error_reason(gc, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
982 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
983 _("Invalid XMPP ID")); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
984 /* Destroying the connection will free the JabberStream */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
985 g_return_val_if_reached(NULL); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
986 } |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
987 |
27794
eb2d17945ce3
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <paul@darkrain42.org>
parents:
27793
diff
changeset
|
988 js->user_jb->subscription |= JABBER_SUB_BOTH; |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
989 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
990 js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
991 g_free, g_free); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
992 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
|
993 g_free, (GDestroyNotify)jabber_chat_free); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
994 js->next_id = g_random_int(); |
15822 | 995 js->write_buffer = purple_circ_buffer_new(512); |
21977
cacc01b50a23
Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21973
diff
changeset
|
996 js->old_length = 0; |
27069
08f5c5b12e7c
The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents:
27055
diff
changeset
|
997 js->keepalive_timeout = 0; |
29772
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
998 js->max_inactivity = DEFAULT_INACTIVITY_TIME; |
25993
6d7d360687bd
Jabber: Default protocol version to 1.0.
Paul Aurich <paul@darkrain42.org>
parents:
25987
diff
changeset
|
999 /* Set the default protocol version to 1.0. Overridden in parser.c. */ |
29561
618c4165d4f8
jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents:
29560
diff
changeset
|
1000 js->protocol_version.major = 1; |
618c4165d4f8
jabber: Treat the version properly.
Paul Aurich <paul@darkrain42.org>
parents:
29560
diff
changeset
|
1001 js->protocol_version.minor = 0; |
23798
16543025aed1
Moved jingle.c global variable "sessions" into JabberStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23797
diff
changeset
|
1002 js->sessions = NULL; |
26080
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1003 js->stun_ip = NULL; |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1004 js->stun_port = 0; |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1005 js->stun_query = NULL; |
30493
196e4c5b2043
Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents:
28096
diff
changeset
|
1006 js->google_relay_token = NULL; |
196e4c5b2043
Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents:
28096
diff
changeset
|
1007 js->google_relay_host = NULL; |
30506
e0796db1df8a
Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents:
30503
diff
changeset
|
1008 js->google_relay_requests = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1009 |
25685
a92df60855f3
Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents:
25255
diff
changeset
|
1010 /* if we are idle, set idle-ness on the stream (this could happen if we get |
a92df60855f3
Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents:
25255
diff
changeset
|
1011 disconnected and the reconnects while being idle. I don't think it makes |
a92df60855f3
Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents:
25255
diff
changeset
|
1012 sense to do this when registering a new account... */ |
25686
feea711ac242
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents:
25685
diff
changeset
|
1013 presence = purple_account_get_presence(account); |
feea711ac242
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents:
25685
diff
changeset
|
1014 if (purple_presence_is_idle(presence)) |
feea711ac242
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents:
25685
diff
changeset
|
1015 js->idle = purple_presence_get_idle_time(presence); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1016 |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1017 return js; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1018 } |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1019 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1020 static void |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1021 jabber_stream_connect(JabberStream *js) |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1022 { |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1023 PurpleConnection *gc = js->gc; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1024 PurpleAccount *account = purple_connection_get_account(gc); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1025 const char *connect_server = purple_account_get_string(account, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1026 "connect_server", ""); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1027 const char *bosh_url = purple_account_get_string(account, |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1028 "bosh_url", ""); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1029 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1030 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
|
1031 |
27173
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1032 /* If both BOSH and a Connect Server are specified, we prefer BOSH. I'm not |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1033 * attached to that choice, though. |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1034 */ |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1035 if (*bosh_url) { |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1036 js->bosh = jabber_bosh_connection_init(js, bosh_url); |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1037 if (js->bosh) |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1038 jabber_bosh_connection_connect(js->bosh); |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1039 else { |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1040 purple_connection_error_reason(gc, |
25677
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
1041 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
27173
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1042 _("Malformed BOSH URL")); |
25677
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
1043 } |
27173
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1044 |
25179
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25177
diff
changeset
|
1045 return; |
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25177
diff
changeset
|
1046 } |
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25177
diff
changeset
|
1047 |
27173
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1048 js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain); |
a9fdf9327652
Make "BOSH URL" its own account option.
Paul Aurich <paul@darkrain42.org>
parents:
27137
diff
changeset
|
1049 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1050 /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */ |
30462
8084631e2e84
jabber: Unify "Require TLS" and "Use old-style (port 5223) SSL" settings
Paul Aurich <paul@darkrain42.org>
parents:
30448
diff
changeset
|
1051 if (g_str_equal("old_ssl", purple_account_get_string(account, "connection_security", JABBER_DEFAULT_REQUIRE_TLS))) { |
15822 | 1052 if(purple_ssl_is_supported()) { |
27635
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27613
diff
changeset
|
1053 js->gsc = purple_ssl_connect(account, js->certificate_CN, |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1054 purple_account_get_int(account, "port", 5223), |
27635
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27613
diff
changeset
|
1055 jabber_login_callback_ssl, jabber_ssl_connect_failure, gc); |
25678
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
1056 if (!js->gsc) { |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1057 purple_connection_error_reason(gc, |
25678
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
1058 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
1059 _("Unable to establish SSL connection")); |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
1060 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1061 } else { |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1062 purple_connection_error_reason(gc, |
21358 | 1063 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
1064 _("SSL support unavailable")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1065 } |
25678
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
1066 |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
1067 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1068 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1069 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1070 /* 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
|
1071 * invoke the magic of SRV lookups, to figure out host and port */ |
25985
c4fd9222dda1
propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1072 if(connect_server[0]) { |
27635
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27613
diff
changeset
|
1073 jabber_login_connect(js, js->user->domain, connect_server, |
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27613
diff
changeset
|
1074 purple_account_get_int(account, "port", 5222), TRUE); |
25678
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
1075 } else { |
31481
b671728e6ee9
Use the new account-contextual DNS API everywhere. Refs #11110
Daniel Atallah <daniel.atallah@gmail.com>
parents:
31314
diff
changeset
|
1076 js->srv_query_data = purple_srv_resolve_account(account, "xmpp-client", |
27635
7fbf964c6c6c
Move the IDN support into the DNS routines.
Paul Aurich <paul@darkrain42.org>
parents:
27613
diff
changeset
|
1077 "tcp", js->user->domain, srv_resolved_cb, js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
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 |
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
|
1081 void |
15822 | 1082 jabber_login(PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1083 { |
15822 | 1084 PurpleConnection *gc = purple_account_get_connection(account); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1085 JabberStream *js; |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1086 PurpleStoredImage *image; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1087 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23180
diff
changeset
|
1088 gc->flags |= PURPLE_CONNECTION_HTML | |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23180
diff
changeset
|
1089 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY; |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1090 js = jabber_stream_new(account); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1091 if (js == NULL) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1092 return; |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1093 |
29047
031fd1cd88df
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents:
29022
diff
changeset
|
1094 /* TODO: Remove this at some point. Added 2010-02-14 (v2.6.6) */ |
031fd1cd88df
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents:
29022
diff
changeset
|
1095 if (g_str_equal("proxy.jabber.org", purple_account_get_string(account, "ft_proxies", ""))) |
031fd1cd88df
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents:
29022
diff
changeset
|
1096 purple_account_set_string(account, "ft_proxies", JABBER_DEFAULT_FT_PROXIES); |
031fd1cd88df
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <paul@darkrain42.org>
parents:
29022
diff
changeset
|
1097 |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1098 /* |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1099 * Calculate the avatar hash for our current image so we know (when we |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1100 * fetch our vCard and PEP avatar) if we should send our avatar to the |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1101 * server. |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1102 */ |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1103 image = purple_buddy_icons_find_account_icon(account); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1104 if (image != NULL) { |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1105 js->initial_avatar_hash = |
29630
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
29602
diff
changeset
|
1106 jabber_calculate_data_hash(purple_imgstore_get_data(image), |
9f59abd49def
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <ml@update.uu.se>
parents:
29602
diff
changeset
|
1107 purple_imgstore_get_size(image), "sha1"); |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1108 purple_imgstore_unref(image); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1109 } |
26080
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1110 |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1111 jabber_stream_connect(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1112 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1113 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1114 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1115 static gboolean |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1116 conn_close_cb(gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1117 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1118 JabberStream *js = data; |
15822 | 1119 PurpleAccount *account = purple_connection_get_account(js->gc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1120 |
17876
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17872
diff
changeset
|
1121 jabber_parser_free(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1122 |
15822 | 1123 purple_account_disconnect(account); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1124 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1125 return FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1126 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1127 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1128 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1129 jabber_connection_schedule_close(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1130 { |
15822 | 1131 purple_timeout_add(0, conn_close_cb, js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1132 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1133 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1134 static void |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1135 jabber_registration_result_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1136 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1137 xmlnode *packet, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1138 { |
17880
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17879
diff
changeset
|
1139 PurpleAccount *account = purple_connection_get_account(js->gc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1140 char *buf; |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1141 char *to = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1142 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1143 if (type == JABBER_IQ_RESULT) { |
17880
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17879
diff
changeset
|
1144 if(js->registration) { |
27284
73c8e1964eef
A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27173
diff
changeset
|
1145 buf = g_strdup_printf(_("Registration of %s@%s successful"), |
27331
46cc3674b13c
Indentation fix.
Etan Reisner <pidgin@unreliablesource.net>
parents:
27069
diff
changeset
|
1146 js->user->node, js->user->domain); |
17881
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
1147 if(account->registration_cb) |
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
1148 (account->registration_cb)(account, TRUE, account->registration_cb_user_data); |
25467
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1149 } else { |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1150 g_return_if_fail(to != NULL); |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1151 buf = g_strdup_printf(_("Registration to %s successful"), |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1152 to); |
25467
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1153 } |
15822 | 1154 purple_notify_info(NULL, _("Registration Successful"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1155 _("Registration Successful"), buf); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1156 g_free(buf); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1157 } 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
|
1158 char *msg = jabber_parse_error(js, packet, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1159 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1160 if(!msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1161 msg = g_strdup(_("Unknown Error")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1162 |
15822 | 1163 purple_notify_error(NULL, _("Registration Failed"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1164 _("Registration Failed"), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1165 g_free(msg); |
17881
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
1166 if(account->registration_cb) |
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
1167 (account->registration_cb)(account, FALSE, account->registration_cb_user_data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1168 } |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1169 g_free(to); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1170 if(js->registration) |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1171 jabber_connection_schedule_close(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1172 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1173 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1174 static void |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1175 jabber_unregistration_result_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1176 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1177 xmlnode *packet, gpointer data) |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1178 { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1179 char *buf; |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1180 char *to = data; |
25467
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1181 |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1182 /* This function is never called for unregistering our XMPP account from |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1183 * the server, so there should always be a 'to' address. */ |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1184 g_return_if_fail(to != NULL); |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1185 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1186 if (type == JABBER_IQ_RESULT) { |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1187 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
|
1188 to); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1189 purple_notify_info(NULL, _("Unregistration Successful"), |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1190 _("Unregistration Successful"), buf); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1191 g_free(buf); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1192 } 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
|
1193 char *msg = jabber_parse_error(js, packet, NULL); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1194 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1195 if(!msg) |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1196 msg = g_strdup(_("Unknown Error")); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1197 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1198 purple_notify_error(NULL, _("Unregistration Failed"), |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1199 _("Unregistration Failed"), msg); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1200 g_free(msg); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1201 } |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1202 g_free(to); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1203 } |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1204 |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1205 typedef struct _JabberRegisterCBData { |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1206 JabberStream *js; |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1207 char *who; |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1208 } JabberRegisterCBData; |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1209 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1210 static void |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1211 jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1212 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1213 GList *groups, *flds; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1214 xmlnode *query, *y; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1215 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1216 char *username; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1217 |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1218 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1219 query = xmlnode_get_child(iq->node, "query"); |
25467
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1220 if (cbdata->who) |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1221 xmlnode_set_attrib(iq->node, "to", cbdata->who); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1222 |
15822 | 1223 for(groups = purple_request_fields_get_groups(fields); groups; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1224 groups = groups->next) { |
15822 | 1225 for(flds = purple_request_field_group_get_fields(groups->data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1226 flds; flds = flds->next) { |
15822 | 1227 PurpleRequestField *field = flds->data; |
1228 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
|
1229 if(!strcmp(id,"unregister")) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1230 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
|
1231 if(value) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1232 /* 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
|
1233 (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
|
1234 jabber_iq_free(iq); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1235 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
|
1236 query = xmlnode_get_child(iq->node, "query"); |
25467
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1237 if (cbdata->who) |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1238 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
|
1239 xmlnode_new_child(query, "remove"); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1240 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1241 jabber_iq_set_callback(iq, jabber_unregistration_result_cb, cbdata->who); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1242 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1243 jabber_iq_send(iq); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1244 g_free(cbdata); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1245 return; |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1246 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1247 } else { |
28360
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1248 const char *ids[] = {"username", "password", "name", "email", "nick", "first", |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1249 "last", "address", "city", "state", "zip", "phone", "url", "date", |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1250 NULL}; |
28314
53bf7fd37cb0
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
28292
diff
changeset
|
1251 const char *value = purple_request_field_string_get_value(field); |
28360
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1252 int i; |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1253 for (i = 0; ids[i]; i++) { |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1254 if (!strcmp(id, ids[i])) |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1255 break; |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1256 } |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1257 |
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1258 if (!ids[i]) |
28314
53bf7fd37cb0
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
28292
diff
changeset
|
1259 continue; |
28360
ed88200c79ee
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
28327
diff
changeset
|
1260 y = xmlnode_new_child(query, ids[i]); |
28314
53bf7fd37cb0
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
28292
diff
changeset
|
1261 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
|
1262 if(cbdata->js->registration && !strcmp(id, "username")) { |
25467
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1263 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
|
1264 cbdata->js->user->node = g_strdup(value); |
28314
53bf7fd37cb0
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
28292
diff
changeset
|
1265 } |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1266 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
|
1267 purple_account_set_password(cbdata->js->gc->account, value); |
28314
53bf7fd37cb0
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
28292
diff
changeset
|
1268 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1269 } |
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 |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1272 if(cbdata->js->registration) { |
28314
53bf7fd37cb0
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
28292
diff
changeset
|
1273 username = g_strdup_printf("%s@%s%s%s", cbdata->js->user->node, cbdata->js->user->domain, |
28731
3bf5dbff753b
jabber: Complete the fix for a NULL printf() on registration on Windows. Closes #10420 again.
Paul Aurich <paul@darkrain42.org>
parents:
28650
diff
changeset
|
1274 cbdata->js->user->resource ? "/" : "", |
3bf5dbff753b
jabber: Complete the fix for a NULL printf() on registration on Windows. Closes #10420 again.
Paul Aurich <paul@darkrain42.org>
parents:
28650
diff
changeset
|
1275 cbdata->js->user->resource ? cbdata->js->user->resource : ""); |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1276 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
|
1277 g_free(username); |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1278 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1279 |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1280 jabber_iq_set_callback(iq, jabber_registration_result_cb, cbdata->who); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1281 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1282 jabber_iq_send(iq); |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1283 g_free(cbdata); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1284 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1285 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1286 static void |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1287 jabber_register_cancel_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1288 { |
17880
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17879
diff
changeset
|
1289 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
|
1290 if(account && cbdata->js->registration) { |
17880
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17879
diff
changeset
|
1291 if(account->registration_cb) |
17881
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
1292 (account->registration_cb)(account, FALSE, account->registration_cb_user_data); |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1293 jabber_connection_schedule_close(cbdata->js); |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1294 } |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1295 g_free(cbdata->who); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1296 g_free(cbdata); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1297 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1298 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1299 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
|
1300 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1301 xmlnode *query; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1302 JabberIq *iq; |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1303 char *to = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1304 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1305 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
|
1306 query = xmlnode_get_child(iq->node, "query"); |
25467
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1307 if (to) |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1308 xmlnode_set_attrib(iq->node,"to",to); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1309 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1310 xmlnode_insert_child(query, result); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1311 |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1312 jabber_iq_set_callback(iq, jabber_registration_result_cb, to); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1313 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1314 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1315 |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1316 static const struct { |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1317 const char *name; |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1318 const char *label; |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1319 } registration_fields[] = { |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1320 { "email", N_("Email") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1321 { "nick", N_("Nickname") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1322 { "first", N_("First name") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1323 { "last", N_("Last name") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1324 { "address", N_("Address") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1325 { "city", N_("City") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1326 { "state", N_("State") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1327 { "zip", N_("Postal code") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1328 { "phone", N_("Phone") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1329 { "url", N_("URL") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1330 { "date", N_("Date") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1331 { NULL, NULL } |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1332 }; |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1333 |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25645
diff
changeset
|
1334 void jabber_register_parse(JabberStream *js, const char *from, JabberIqType type, |
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25645
diff
changeset
|
1335 const char *id, xmlnode *query) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1336 { |
17880
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17879
diff
changeset
|
1337 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
|
1338 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
|
1339 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
|
1340 PurpleRequestField *field; |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1341 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
|
1342 char *instructions; |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1343 JabberRegisterCBData *cbdata; |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1344 gboolean registered = FALSE; |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1345 int i; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1346 |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25645
diff
changeset
|
1347 if (type != JABBER_IQ_RESULT) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1348 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1349 |
21326
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1350 if(js->registration) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1351 /* get rid of the login thingy */ |
15822 | 1352 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
|
1353 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1354 |
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
|
1355 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
|
1356 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
|
1357 |
17880
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17879
diff
changeset
|
1358 if(js->registration) { |
15822 | 1359 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
|
1360 _("Already Registered"), NULL); |
17880
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17879
diff
changeset
|
1361 if(account->registration_cb) |
17881
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
1362 (account->registration_cb)(account, FALSE, account->registration_cb_user_data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1363 jabber_connection_schedule_close(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1364 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1365 } |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1366 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1367 |
25432
256fbe98f6be
The jabber_register_parse function was looking for the <x> node as a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25412
diff
changeset
|
1368 if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) { |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1369 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
|
1370 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
|
1371 |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
1372 } 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
|
1373 xmlnode *url; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1374 |
21326
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1375 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
|
1376 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
|
1377 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
|
1378 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
|
1379 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
|
1380 |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1381 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
|
1382 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
|
1383 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
|
1384 (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
|
1385 jabber_connection_schedule_close(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1386 } |
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
|
1387 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1388 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1389 } |
21326
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1390 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1391 |
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
|
1392 /* as a last resort, use the old jabber:iq:register syntax */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1393 |
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
|
1394 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
|
1395 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
|
1396 purple_request_fields_add_group(fields, group); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1397 |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1398 if((node = xmlnode_get_child(query, "username"))) { |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1399 char *data = xmlnode_get_data(node); |
26247
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1400 if(js->registration) |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1401 field = purple_request_field_string_new("username", _("Username"), data ? data : js->user->node, FALSE); |
26247
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1402 else |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1403 field = purple_request_field_string_new("username", _("Username"), data, FALSE); |
26247
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1404 |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1405 purple_request_field_group_add_field(group, field); |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1406 g_free(data); |
26247
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1407 } |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1408 if((node = xmlnode_get_child(query, "password"))) { |
26247
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1409 if(js->registration) |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1410 field = purple_request_field_string_new("password", _("Password"), |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1411 purple_connection_get_password(js->gc), FALSE); |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1412 else { |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1413 char *data = xmlnode_get_data(node); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1414 field = purple_request_field_string_new("password", _("Password"), data, FALSE); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1415 g_free(data); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1416 } |
26247
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1417 |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1418 purple_request_field_string_set_masked(field, TRUE); |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1419 purple_request_field_group_add_field(group, field); |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1420 } |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1421 |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1422 if((node = xmlnode_get_child(query, "name"))) { |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1423 if(js->registration) |
15822 | 1424 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
|
1425 purple_account_get_alias(js->gc->account), FALSE); |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1426 else { |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1427 char *data = xmlnode_get_data(node); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1428 field = purple_request_field_string_new("name", _("Name"), data, FALSE); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1429 g_free(data); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1430 } |
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
|
1431 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
|
1432 } |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1433 |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1434 for (i = 0; registration_fields[i].name != NULL; ++i) { |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1435 if ((node = xmlnode_get_child(query, registration_fields[i].name))) { |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1436 char *data = xmlnode_get_data(node); |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1437 field = purple_request_field_string_new(registration_fields[i].name, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1438 _(registration_fields[i].label), |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1439 data, FALSE); |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1440 purple_request_field_group_add_field(group, field); |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1441 g_free(data); |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1442 } |
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 } |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1444 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1445 if(registered) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1446 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
|
1447 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
|
1448 } |
15373
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 if((y = xmlnode_get_child(query, "instructions"))) |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1451 instructions = xmlnode_get_data(y); |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1452 else if(registered) |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1453 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
|
1454 "to change your account registration.")); |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1455 else |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1456 instructions = g_strdup(_("Please fill out the information below " |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1457 "to register your new account.")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1458 |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1459 cbdata = g_new0(JabberRegisterCBData, 1); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1460 cbdata->js = js; |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1461 cbdata->who = g_strdup(from); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1462 |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1463 if(js->registration) |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1464 purple_request_fields(js->gc, _("Register New XMPP Account"), |
16904
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16811
diff
changeset
|
1465 _("Register New XMPP Account"), instructions, fields, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1466 _("Register"), G_CALLBACK(jabber_register_cb), |
16439
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16240
diff
changeset
|
1467 _("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
|
1468 purple_connection_get_account(js->gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1469 cbdata); |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1470 else { |
25467
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1471 char *title; |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1472 g_return_if_fail(from != NULL); |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25463
diff
changeset
|
1473 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
|
1474 :g_strdup_printf(_("Register New Account at %s"), from); |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1475 purple_request_fields(js->gc, title, |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1476 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
|
1477 (registered ? _("Change Registration") : _("Register")), G_CALLBACK(jabber_register_cb), |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1478 _("Cancel"), G_CALLBACK(jabber_register_cancel_cb), |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1479 purple_connection_get_account(js->gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1480 cbdata); |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1481 g_free(title); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1482 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1483 |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1484 g_free(instructions); |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1485 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1486 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1487 void jabber_register_start(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1488 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1489 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1490 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1491 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
|
1492 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1493 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1494 |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1495 void jabber_register_gateway(JabberStream *js, const char *gateway) { |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1496 JabberIq *iq; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1497 |
17872
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1498 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register"); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1499 xmlnode_set_attrib(iq->node, "to", gateway); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1500 jabber_iq_send(iq); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1501 } |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17869
diff
changeset
|
1502 |
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
|
1503 void jabber_register_account(PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1504 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1505 JabberStream *js; |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1506 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1507 js = jabber_stream_new(account); |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1508 if (js == NULL) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1509 return; |
27599
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1510 |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1511 js->registration = TRUE; |
409ef6d76bf6
Refactor jabber_login and jabber_register_account
Paul Aurich <paul@darkrain42.org>
parents:
27527
diff
changeset
|
1512 jabber_stream_connect(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1513 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1514 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1515 static void |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1516 jabber_unregister_account_iq_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1517 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1518 xmlnode *packet, gpointer data) |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1519 { |
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
|
1520 PurpleAccount *account = purple_connection_get_account(js->gc); |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1521 |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1522 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
|
1523 char *msg = jabber_parse_error(js, packet, NULL); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
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 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
|
1526 _("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
|
1527 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
|
1528 if(js->unregistration_cb) |
18921
ba3b22cd280b
Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18920
diff
changeset
|
1529 js->unregistration_cb(account, FALSE, js->unregistration_user_data); |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1530 } 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
|
1531 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
|
1532 _("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
|
1533 if(js->unregistration_cb) |
18921
ba3b22cd280b
Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18920
diff
changeset
|
1534 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
|
1535 } |
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
1536 } |
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
|
1537 |
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
|
1538 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
|
1539 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
|
1540 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
|
1541 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1542 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
|
1543 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1544 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
|
1545 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1546 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
|
1547 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1548 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
|
1549 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
|
1550 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1551 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
|
1552 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
|
1553 } |
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
|
1554 |
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
|
1555 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
|
1556 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
|
1557 JabberStream *js; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1558 |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
1559 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
|
1560 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
|
1561 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
|
1562 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
|
1563 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
|
1564 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
|
1565 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
|
1566 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
|
1567 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1568 |
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
|
1569 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
|
1570 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1571 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
|
1572 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
|
1573 return; |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1574 } |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1575 |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
1576 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
|
1577 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
|
1578 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
|
1579 |
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
|
1580 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
|
1581 } |
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
|
1582 |
25587
3b674151cd60
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25586
diff
changeset
|
1583 /* TODO: As Will pointed out in IRC, after being notified by the core to |
3b674151cd60
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25586
diff
changeset
|
1584 * shutdown, we should async. wait for the server to send us the stream |
3b674151cd60
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25586
diff
changeset
|
1585 * termination before destorying everything. That seems like it would require |
3b674151cd60
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25586
diff
changeset
|
1586 * changing the semantics of prpl->close(), so it's a good idea for 3.0.0. |
3b674151cd60
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <paul@darkrain42.org>
parents:
25586
diff
changeset
|
1587 */ |
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
|
1588 void jabber_close(PurpleConnection *gc) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1589 { |
28943
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
28942
diff
changeset
|
1590 JabberStream *js = purple_connection_get_protocol_data(gc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1591 |
23817
41d6d4217d21
Further decoupled Jingle code from jabber.c:
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23816
diff
changeset
|
1592 /* Close all of the open Jingle sessions on this stream */ |
24938
bd598b606ca4
Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23911
diff
changeset
|
1593 jingle_terminate_sessions(js); |
23797
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23796
diff
changeset
|
1594 |
28943
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
28942
diff
changeset
|
1595 if (js->bosh) |
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
28942
diff
changeset
|
1596 jabber_bosh_connection_close(js->bosh); |
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
28942
diff
changeset
|
1597 else if ((js->gsc && js->gsc->fd > 0) || js->fd > 0) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1598 jabber_send_raw(js, "</stream:stream>", -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1599 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1600 if (js->srv_query_data) |
15822 | 1601 purple_srv_cancel(js->srv_query_data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1602 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1603 if(js->gsc) { |
28943
1cf9103727f2
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <paul@darkrain42.org>
parents:
28942
diff
changeset
|
1604 purple_ssl_close(js->gsc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1605 } else if (js->fd > 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1606 if(js->gc->inpa) |
15822 | 1607 purple_input_remove(js->gc->inpa); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1608 close(js->fd); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1609 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1610 |
25182
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1611 if (js->bosh) |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1612 jabber_bosh_connection_destroy(js->bosh); |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1613 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1614 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
|
1615 |
17876
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17872
diff
changeset
|
1616 jabber_parser_free(js); |
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17872
diff
changeset
|
1617 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1618 if(js->iq_callbacks) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1619 g_hash_table_destroy(js->iq_callbacks); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1620 if(js->buddies) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1621 g_hash_table_destroy(js->buddies); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1622 if(js->chats) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1623 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
|
1624 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1625 while(js->chat_servers) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1626 g_free(js->chat_servers->data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1627 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
|
1628 } |
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
|
1629 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1630 while(js->user_directories) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1631 g_free(js->user_directories->data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1632 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
|
1633 } |
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
|
1634 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21592
diff
changeset
|
1635 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
|
1636 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
|
1637 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
|
1638 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
|
1639 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
|
1640 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
|
1641 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
|
1642 } |
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
|
1643 |
23686
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23599
diff
changeset
|
1644 while(js->url_datas) { |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23599
diff
changeset
|
1645 purple_util_fetch_url_cancel(js->url_datas->data); |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23599
diff
changeset
|
1646 js->url_datas = g_slist_delete_link(js->url_datas, js->url_datas); |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23599
diff
changeset
|
1647 } |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23599
diff
changeset
|
1648 |
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
|
1649 g_free(js->stream_id); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1650 if(js->user) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1651 jabber_id_free(js->user); |
25426
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25423
diff
changeset
|
1652 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
|
1653 g_free(js->avatar_hash); |
25146
4040da08a733
Entity Capabilities must be per-JabberStream
Paul Aurich <paul@darkrain42.org>
parents:
25145
diff
changeset
|
1654 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
|
1655 |
29746
0f895633faeb
jabber: Stifle an assertion warning.
Paul Aurich <paul@darkrain42.org>
parents:
29734
diff
changeset
|
1656 if (js->write_buffer) |
0f895633faeb
jabber: Stifle an assertion warning.
Paul Aurich <paul@darkrain42.org>
parents:
29734
diff
changeset
|
1657 purple_circ_buffer_destroy(js->write_buffer); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1658 if(js->writeh) |
15822 | 1659 purple_input_remove(js->writeh); |
28707
c1d41b7484ff
jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents:
28696
diff
changeset
|
1660 if (js->auth_mech && js->auth_mech->dispose) |
c1d41b7484ff
jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <paul@darkrain42.org>
parents:
28696
diff
changeset
|
1661 js->auth_mech->dispose(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1662 #ifdef HAVE_CYRUS_SASL |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1663 if(js->sasl) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1664 sasl_dispose(&js->sasl); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1665 if(js->sasl_mechs) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1666 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
|
1667 g_free(js->sasl_cb); |
30448
a5131a257967
jabber: Fix a pernicious race condition in our cyrus auth code
Paul Aurich <paul@darkrain42.org>
parents:
30416
diff
changeset
|
1668 /* 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:
30416
diff
changeset
|
1669 free(js->sasl_secret); |
18929
67cb28c0ec89
applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18163
diff
changeset
|
1670 #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
|
1671 g_free(js->serverFQDN); |
17883
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
1672 while(js->commands) { |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
1673 JabberAdHocCommands *cmd = js->commands->data; |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
1674 g_free(cmd->jid); |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
1675 g_free(cmd->node); |
17893
11dd7969dd4b
Fixed copy/paste error.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17890
diff
changeset
|
1676 g_free(cmd->name); |
17883
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
1677 g_free(cmd); |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
1678 js->commands = g_list_delete_link(js->commands, js->commands); |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
1679 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1680 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
|
1681 g_free(js->certificate_CN); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1682 g_free(js->gmail_last_time); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1683 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
|
1684 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
|
1685 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
|
1686 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
|
1687 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
|
1688 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
|
1689 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
|
1690 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
|
1691 |
27775
1ea1aee71848
jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents:
27663
diff
changeset
|
1692 if (js->vcard_timer != 0) |
1ea1aee71848
jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents:
27663
diff
changeset
|
1693 purple_timeout_remove(js->vcard_timer); |
1ea1aee71848
jabber: Fix setting Google Talk avatar at login.
Paul Aurich <paul@darkrain42.org>
parents:
27663
diff
changeset
|
1694 |
27069
08f5c5b12e7c
The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <paul@darkrain42.org>
parents:
27055
diff
changeset
|
1695 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
|
1696 purple_timeout_remove(js->keepalive_timeout); |
29772
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
1697 if (js->inactivity_timer != 0) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
1698 purple_timeout_remove(js->inactivity_timer); |
23598
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
1699 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
1700 g_free(js->srv_rec); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
1701 js->srv_rec = NULL; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
1702 |
26080
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1703 g_free(js->stun_ip); |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1704 js->stun_ip = NULL; |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1705 |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1706 /* cancel DNS query for STUN, if one is ongoing */ |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1707 if (js->stun_query) { |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1708 purple_dnsquery_destroy(js->stun_query); |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1709 js->stun_query = NULL; |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1710 } |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
1711 |
30493
196e4c5b2043
Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents:
28096
diff
changeset
|
1712 /* remove Google relay-related stuff */ |
196e4c5b2043
Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents:
28096
diff
changeset
|
1713 g_free(js->google_relay_token); |
196e4c5b2043
Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents:
28096
diff
changeset
|
1714 g_free(js->google_relay_host); |
30506
e0796db1df8a
Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents:
30503
diff
changeset
|
1715 if (js->google_relay_requests) { |
e0796db1df8a
Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents:
30503
diff
changeset
|
1716 while (js->google_relay_requests) { |
e0796db1df8a
Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents:
30503
diff
changeset
|
1717 PurpleUtilFetchUrlData *url_data = |
e0796db1df8a
Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents:
30503
diff
changeset
|
1718 (PurpleUtilFetchUrlData *) js->google_relay_requests->data; |
e0796db1df8a
Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents:
30503
diff
changeset
|
1719 purple_util_fetch_url_cancel(url_data); |
e0796db1df8a
Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents:
30503
diff
changeset
|
1720 g_free(url_data); |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
1721 js->google_relay_requests = |
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
1722 g_list_delete_link(js->google_relay_requests, |
30506
e0796db1df8a
Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents:
30503
diff
changeset
|
1723 js->google_relay_requests); |
e0796db1df8a
Keep track of more than one relay request at a time (this is probably not
Marcus Lundblad <ml@update.uu.se>
parents:
30503
diff
changeset
|
1724 } |
30493
196e4c5b2043
Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents:
28096
diff
changeset
|
1725 } |
196e4c5b2043
Some unfinished code to take advantage of Google's relays
Marcus Lundblad <ml@update.uu.se>
parents:
28096
diff
changeset
|
1726 |
23599
fa8567fa0ca0
Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23598
diff
changeset
|
1727 g_free(js); |
fa8567fa0ca0
Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23598
diff
changeset
|
1728 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1729 gc->proto_data = NULL; |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1732 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
|
1733 { |
28327
c7aaad89a2f8
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents:
28314
diff
changeset
|
1734 #define JABBER_CONNECT_STEPS ((js->gsc || js->state == JABBER_STREAM_INITIALIZING_ENCRYPTION) ? 9 : 5) |
c7aaad89a2f8
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents:
28314
diff
changeset
|
1735 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1736 js->state = state; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1737 switch(state) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1738 case JABBER_STREAM_OFFLINE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1739 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1740 case JABBER_STREAM_CONNECTING: |
15822 | 1741 purple_connection_update_progress(js->gc, _("Connecting"), 1, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1742 JABBER_CONNECT_STEPS); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1743 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1744 case JABBER_STREAM_INITIALIZING: |
15822 | 1745 purple_connection_update_progress(js->gc, _("Initializing Stream"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1746 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1747 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1748 break; |
17879
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
1749 case JABBER_STREAM_INITIALIZING_ENCRYPTION: |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
1750 purple_connection_update_progress(js->gc, _("Initializing SSL/TLS"), |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
1751 6, JABBER_CONNECT_STEPS); |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
1752 break; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1753 case JABBER_STREAM_AUTHENTICATING: |
15822 | 1754 purple_connection_update_progress(js->gc, _("Authenticating"), |
17879
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
1755 js->gsc ? 7 : 3, JABBER_CONNECT_STEPS); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1756 break; |
28096
b357216b7b79
jabber: Fix using BOSH and legacy auth together. Closes #9990.
Paul Aurich <paul@darkrain42.org>
parents:
28048
diff
changeset
|
1757 case JABBER_STREAM_POST_AUTH: |
15822 | 1758 purple_connection_update_progress(js->gc, _("Re-initializing Stream"), |
17879
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
1759 (js->gsc ? 8 : 4), JABBER_CONNECT_STEPS); |
16811
a77901ef0ebb
this should fix jabber buddy icons (but it will re-introduce the behavior of overwriting your vCard whenever you sign in).
Nathan Walp <nwalp@pidgin.im>
parents:
16719
diff
changeset
|
1760 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1761 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1762 case JABBER_STREAM_CONNECTED: |
27495
c8390dc125c1
Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents:
27014
diff
changeset
|
1763 /* Send initial presence */ |
c8390dc125c1
Use js->state to track whether the roster has been retrieved.
Paul Aurich <paul@darkrain42.org>
parents:
27014
diff
changeset
|
1764 jabber_presence_send(js, TRUE); |
29772
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
1765 /* Start up the inactivity timer */ |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
1766 jabber_stream_restart_inactivity_timer(js); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
1767 |
15822 | 1768 purple_connection_set_state(js->gc, PURPLE_CONNECTED); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1769 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1770 } |
28327
c7aaad89a2f8
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents:
28314
diff
changeset
|
1771 |
c7aaad89a2f8
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <paul@darkrain42.org>
parents:
28314
diff
changeset
|
1772 #undef JABBER_CONNECT_STEPS |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1773 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1774 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1775 char *jabber_get_next_id(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1776 { |
15822 | 1777 return g_strdup_printf("purple%x", js->next_id++); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1778 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1779 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1780 |
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
|
1781 void jabber_idle_set(PurpleConnection *gc, int idle) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1782 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1783 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1784 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1785 js->idle = idle ? time(NULL) - idle : idle; |
26705
fef989505ea2
propagate from branch 'im.pidgin.pidgin' (head 7281ad5ba8e68debd285e06dafebd991e980f3da)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1786 |
25198
e9b7e41dc816
A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <ml@update.uu.se>
parents:
24216
diff
changeset
|
1787 /* send out an updated prescence */ |
e9b7e41dc816
A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <ml@update.uu.se>
parents:
24216
diff
changeset
|
1788 purple_debug_info("jabber", "sending updated presence for idle\n"); |
26736 | 1789 jabber_presence_send(js, FALSE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1790 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1791 |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1792 void jabber_blocklist_parse_push(JabberStream *js, const char *from, |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1793 JabberIqType type, const char *id, |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1794 xmlnode *child) |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1795 { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1796 JabberIq *result; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1797 xmlnode *item; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1798 PurpleAccount *account; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1799 gboolean is_block; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1800 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1801 if (!jabber_is_own_account(js, from)) { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1802 xmlnode *error, *x; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1803 result = jabber_iq_new(js, JABBER_IQ_ERROR); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1804 xmlnode_set_attrib(result->node, "id", id); |
26958
c41698323c2f
No, I had that right the first time; if it's not our account, then there *is* a from and we need to route the IQ to the proper place.
Paul Aurich <paul@darkrain42.org>
parents:
26957
diff
changeset
|
1805 if (from) |
c41698323c2f
No, I had that right the first time; if it's not our account, then there *is* a from and we need to route the IQ to the proper place.
Paul Aurich <paul@darkrain42.org>
parents:
26957
diff
changeset
|
1806 xmlnode_set_attrib(result->node, "to", from); |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1807 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1808 error = xmlnode_new_child(result->node, "error"); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1809 xmlnode_set_attrib(error, "type", "cancel"); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1810 x = xmlnode_new_child(error, "not-allowed"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
1811 xmlnode_set_namespace(x, NS_XMPP_STANZAS); |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1812 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1813 jabber_iq_send(result); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1814 return; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1815 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1816 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1817 account = purple_connection_get_account(js->gc); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1818 is_block = g_str_equal(child->name, "block"); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1819 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1820 item = xmlnode_get_child(child, "item"); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1821 if (!is_block && item == NULL) { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1822 /* Unblock everyone */ |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1823 purple_debug_info("jabber", "Received unblock push. Unblocking everyone.\n"); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1824 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1825 while (account->deny != NULL) { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1826 purple_privacy_deny_remove(account, account->deny->data, TRUE); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1827 } |
26957
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1828 } else if (item == NULL) { |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1829 /* An empty <block/> is bogus */ |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1830 xmlnode *error, *x; |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1831 result = jabber_iq_new(js, JABBER_IQ_ERROR); |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1832 xmlnode_set_attrib(result->node, "id", id); |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1833 |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1834 error = xmlnode_new_child(result->node, "error"); |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1835 xmlnode_set_attrib(error, "type", "modify"); |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1836 x = xmlnode_new_child(error, "bad-request"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
1837 xmlnode_set_namespace(x, NS_XMPP_STANZAS); |
26957
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1838 |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1839 jabber_iq_send(result); |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1840 return; |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1841 } else { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1842 for ( ; item; item = xmlnode_get_next_twin(item)) { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1843 const char *jid = xmlnode_get_attrib(item, "jid"); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1844 if (jid == NULL || *jid == '\0') |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1845 continue; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1846 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1847 if (is_block) |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1848 purple_privacy_deny_add(account, jid, TRUE); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1849 else |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1850 purple_privacy_deny_remove(account, jid, TRUE); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1851 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1852 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1853 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1854 result = jabber_iq_new(js, JABBER_IQ_RESULT); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1855 xmlnode_set_attrib(result->node, "id", id); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1856 jabber_iq_send(result); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1857 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1858 |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1859 static void jabber_blocklist_parse(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1860 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1861 xmlnode *packet, gpointer data) |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1862 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1863 xmlnode *blocklist, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1864 PurpleAccount *account; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1865 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1866 blocklist = xmlnode_get_child_with_namespace(packet, |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
1867 "blocklist", NS_SIMPLE_BLOCKING); |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1868 account = purple_connection_get_account(js->gc); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1869 |
26952
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1870 if (type == JABBER_IQ_ERROR || blocklist == NULL) |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1871 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1872 |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1873 /* This is the only privacy method supported by XEP-0191 */ |
26952
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1874 if (account->perm_deny != PURPLE_PRIVACY_DENY_USERS) |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1875 account->perm_deny = PURPLE_PRIVACY_DENY_USERS; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1876 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1877 /* |
26952
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1878 * TODO: When account->deny is something more than a hash table, this can |
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1879 * be re-written to find the set intersection and difference. |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1880 */ |
26952
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1881 while (account->deny) |
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1882 purple_privacy_deny_remove(account, account->deny->data, TRUE); |
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1883 |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1884 item = xmlnode_get_child(blocklist, "item"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1885 while (item != NULL) { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1886 const char *jid = xmlnode_get_attrib(item, "jid"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1887 purple_privacy_deny_add(account, jid, TRUE); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1888 item = xmlnode_get_next_twin(item); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1889 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1890 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1891 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1892 void jabber_request_block_list(JabberStream *js) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1893 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1894 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1895 xmlnode *blocklist; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1896 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1897 iq = jabber_iq_new(js, JABBER_IQ_GET); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1898 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1899 blocklist = xmlnode_new_child(iq->node, "blocklist"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
1900 xmlnode_set_namespace(blocklist, NS_SIMPLE_BLOCKING); |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1901 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1902 jabber_iq_set_callback(iq, jabber_blocklist_parse, NULL); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1903 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1904 jabber_iq_send(iq); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1905 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1906 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1907 void jabber_add_deny(PurpleConnection *gc, const char *who) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1908 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1909 JabberStream *js; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1910 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1911 xmlnode *block, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1912 |
28758
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
28744
diff
changeset
|
1913 g_return_if_fail(who != NULL && *who != '\0'); |
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
28744
diff
changeset
|
1914 |
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
28744
diff
changeset
|
1915 js = purple_connection_get_protocol_data(gc); |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1916 if (js == NULL) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1917 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1918 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1919 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1920 { |
28758
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
28744
diff
changeset
|
1921 jabber_google_roster_add_deny(js, who); |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1922 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1923 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1924 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1925 if (!(js->server_caps & JABBER_CAP_BLOCKING)) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1926 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1927 purple_notify_error(NULL, _("Server doesn't support blocking"), |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1928 _("Server doesn't support blocking"), NULL); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1929 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1930 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1931 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1932 iq = jabber_iq_new(js, JABBER_IQ_SET); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1933 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1934 block = xmlnode_new_child(iq->node, "block"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
1935 xmlnode_set_namespace(block, NS_SIMPLE_BLOCKING); |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1936 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1937 item = xmlnode_new_child(block, "item"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1938 xmlnode_set_attrib(item, "jid", who); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1939 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1940 jabber_iq_send(iq); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1941 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1942 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1943 void jabber_rem_deny(PurpleConnection *gc, const char *who) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1944 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1945 JabberStream *js; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1946 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1947 xmlnode *unblock, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1948 |
28758
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
28744
diff
changeset
|
1949 g_return_if_fail(who != NULL && *who != '\0'); |
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
28744
diff
changeset
|
1950 |
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
28744
diff
changeset
|
1951 js = purple_connection_get_protocol_data(gc); |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1952 if (js == NULL) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1953 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1954 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1955 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1956 { |
28758
531f8367025e
jabber: Clean up this code a little.
Paul Aurich <paul@darkrain42.org>
parents:
28744
diff
changeset
|
1957 jabber_google_roster_rem_deny(js, who); |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1958 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1959 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1960 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1961 if (!(js->server_caps & JABBER_CAP_BLOCKING)) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1962 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1963 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1964 iq = jabber_iq_new(js, JABBER_IQ_SET); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1965 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1966 unblock = xmlnode_new_child(iq->node, "unblock"); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
1967 xmlnode_set_namespace(unblock, NS_SIMPLE_BLOCKING); |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1968 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1969 item = xmlnode_new_child(unblock, "item"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1970 xmlnode_set_attrib(item, "jid", who); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1971 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1972 jabber_iq_send(iq); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1973 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1974 |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1975 void jabber_add_feature(const char *namespace, JabberFeatureEnabled cb) { |
17849
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17848
diff
changeset
|
1976 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
|
1977 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1978 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
|
1979 |
17849
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17848
diff
changeset
|
1980 feat = g_new0(JabberFeature,1); |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1981 feat->namespace = g_strdup(namespace); |
17849
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17848
diff
changeset
|
1982 feat->is_enabled = cb; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1983 |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1984 /* try to remove just in case it already exists in the list */ |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1985 jabber_remove_feature(namespace); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1986 |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1987 jabber_features = g_list_append(jabber_features, feat); |
17836
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17835
diff
changeset
|
1988 } |
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17835
diff
changeset
|
1989 |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1990 void jabber_remove_feature(const char *namespace) { |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1991 GList *feature; |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1992 for(feature = jabber_features; feature; feature = feature->next) { |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1993 JabberFeature *feat = (JabberFeature*)feature->data; |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1994 if(!strcmp(feat->namespace, namespace)) { |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1995 g_free(feat->namespace); |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1996 g_free(feature->data); |
21538 | 1997 jabber_features = g_list_delete_link(jabber_features, feature); |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1998 break; |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1999 } |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2000 } |
17836
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17835
diff
changeset
|
2001 } |
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17835
diff
changeset
|
2002 |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2003 static void jabber_features_destroy(void) |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2004 { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2005 while (jabber_features) { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2006 JabberFeature *feature = jabber_features->data; |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2007 g_free(feature->namespace); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2008 g_free(feature); |
28438 | 2009 jabber_features = g_list_delete_link(jabber_features, jabber_features); |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2010 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2011 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2012 |
30259
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2013 gint |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2014 jabber_identity_compare(gconstpointer a, gconstpointer b) |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2015 { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2016 const JabberIdentity *ac; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2017 const JabberIdentity *bc; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2018 gint cat_cmp; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2019 gint typ_cmp; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2020 |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2021 ac = a; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2022 bc = b; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2023 |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2024 if ((cat_cmp = strcmp(ac->category, bc->category)) == 0) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2025 if ((typ_cmp = strcmp(ac->type, bc->type)) == 0) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2026 if (!ac->lang && !bc->lang) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2027 return 0; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2028 } else if (ac->lang && !bc->lang) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2029 return 1; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2030 } else if (!ac->lang && bc->lang) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2031 return -1; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2032 } else { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2033 return strcmp(ac->lang, bc->lang); |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2034 } |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2035 } else { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2036 return typ_cmp; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2037 } |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2038 } else { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2039 return cat_cmp; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2040 } |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2041 } |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2042 |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2043 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:
30225
diff
changeset
|
2044 const gchar *lang, const gchar *name) |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2045 { |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2046 GList *identity; |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2047 JabberIdentity *ident; |
30259
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2048 |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2049 /* both required according to XEP-0030 */ |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2050 g_return_if_fail(category != NULL); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2051 g_return_if_fail(type != NULL); |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2052 |
30259
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2053 /* Check if this identity is already there... */ |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2054 for (identity = jabber_identities; identity; identity = identity->next) { |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2055 JabberIdentity *id = identity->data; |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2056 if (g_str_equal(id->category, category) && |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2057 g_str_equal(id->type, type) && |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2058 purple_strequal(id->lang, lang)) |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
2059 return; |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2060 } |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
2061 |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2062 ident = g_new0(JabberIdentity, 1); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2063 ident->category = g_strdup(category); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2064 ident->type = g_strdup(type); |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
2065 ident->lang = g_strdup(lang); |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2066 ident->name = g_strdup(name); |
30259
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2067 jabber_identities = g_list_insert_sorted(jabber_identities, ident, |
116ca888e77d
jabber: Move another function out of caps.c...
Paul Aurich <paul@darkrain42.org>
parents:
30225
diff
changeset
|
2068 jabber_identity_compare); |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2069 } |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
2070 |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2071 static void jabber_identities_destroy(void) |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2072 { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2073 while (jabber_identities) { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2074 JabberIdentity *id = jabber_identities->data; |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2075 g_free(id->category); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2076 g_free(id->type); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2077 g_free(id->lang); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2078 g_free(id->name); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2079 g_free(id); |
28438 | 2080 jabber_identities = g_list_delete_link(jabber_identities, jabber_identities); |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2081 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2082 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
2083 |
26272
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
2084 gboolean jabber_stream_is_ssl(JabberStream *js) |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
2085 { |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
2086 return (js->bosh && jabber_bosh_connection_is_ssl(js->bosh)) || |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
2087 (!js->bosh && js->gsc); |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
2088 } |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
2089 |
29772
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2090 static gboolean |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2091 inactivity_cb(gpointer data) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2092 { |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2093 JabberStream *js = data; |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2094 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2095 /* We want whatever is sent to set this. It's okay because |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2096 * the eventloop unsets it via the return FALSE. |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2097 */ |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2098 js->inactivity_timer = 0; |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2099 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2100 if (js->bosh) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2101 jabber_bosh_connection_send_keepalive(js->bosh); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2102 else |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2103 jabber_send_raw(js, "\t", 1); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2104 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2105 return FALSE; |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2106 } |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2107 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2108 void jabber_stream_restart_inactivity_timer(JabberStream *js) |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2109 { |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2110 if (js->inactivity_timer != 0) { |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2111 purple_timeout_remove(js->inactivity_timer); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2112 js->inactivity_timer = 0; |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2113 } |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2114 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2115 g_return_if_fail(js->max_inactivity > 0); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2116 |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2117 js->inactivity_timer = |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2118 purple_timeout_add_seconds(js->max_inactivity, |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2119 inactivity_cb, js); |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2120 } |
3ac7f10d13d4
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <paul@darkrain42.org>
parents:
29755
diff
changeset
|
2121 |
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
|
2122 const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2123 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2124 return "jabber"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2125 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2126 |
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
|
2127 const char* jabber_list_emblem(PurpleBuddy *b) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2128 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2129 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2130 JabberBuddy *jb = NULL; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2131 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2132 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2133 if(!gc) |
15497
0d4890637238
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15462
diff
changeset
|
2134 return NULL; |
0d4890637238
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15462
diff
changeset
|
2135 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2136 js = gc->proto_data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2137 if(js) |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2138 jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2139 |
15822 | 2140 if(!PURPLE_BUDDY_IS_ONLINE(b)) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2141 if(jb && (jb->subscription & JABBER_SUB_PENDING || |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2142 !(jb->subscription & JABBER_SUB_TO))) |
15462 | 2143 return "not-authorized"; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2144 } |
27054
dd7e7071d46d
Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <paul@darkrain42.org>
parents:
27053
diff
changeset
|
2145 |
25512
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2146 if (jb) { |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2147 JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, NULL); |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2148 if (jbr) { |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
2149 const gchar *client_type = |
25512
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2150 jabber_resource_get_identity_category_type(jbr, "client"); |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
2151 |
25512
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2152 if (client_type) { |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2153 if (strcmp(client_type, "phone") == 0) { |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2154 return "mobile"; |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2155 } else if (strcmp(client_type, "web") == 0) { |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2156 return "external"; |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2157 } else if (strcmp(client_type, "handheld") == 0) { |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2158 return "hiptop"; |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2159 } else if (strcmp(client_type, "bot") == 0) { |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2160 return "bot"; |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2161 } |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2162 /* the default value "pc" falls through and has no emblem */ |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2163 } |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2164 } |
1d3274111180
Set a value "type" in the ui_info hash table
Marcus Lundblad <ml@update.uu.se>
parents:
25432
diff
changeset
|
2165 } |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
2166 |
15462 | 2167 return NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2168 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2169 |
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
|
2170 char *jabber_status_text(PurpleBuddy *b) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2171 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2172 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
|
2173 JabberBuddy *jb = NULL; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2174 PurpleAccount *account = purple_buddy_get_account(b); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2175 PurpleConnection *gc = purple_account_get_connection(account); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2176 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2177 if (gc && gc->proto_data) |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2178 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2179 |
15822 | 2180 if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2181 ret = g_strdup(_("Not Authorized")); |
15822 | 2182 } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2183 ret = g_strdup(jb->error_msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2184 } else { |
26691
803e05b3a871
Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents:
26685
diff
changeset
|
2185 PurplePresence *presence = purple_buddy_get_presence(b); |
27487
7a2891487a00
Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27438
diff
changeset
|
2186 PurpleStatus *status = purple_presence_get_active_status(presence); |
27527
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2187 const char *message; |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2188 |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2189 if((message = purple_status_get_attr_string(status, "message"))) { |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2190 ret = g_markup_escape_text(message, -1); |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2191 } 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
|
2192 PurpleStatus *status = purple_presence_get_status(presence, "tune"); |
a12574d982a1
merge of '6bf1ed8cefd6bb5b980baf7501bcf6936634bd8d'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2193 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
|
2194 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
|
2195 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
|
2196 ret = purple_util_format_song_info(title, artist, album, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2197 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2198 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2199 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2200 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2201 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2202 |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2203 static void |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2204 jabber_tooltip_add_resource_text(JabberBuddyResource *jbr, |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2205 PurpleNotifyUserInfo *user_info, gboolean multiple_resources) |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2206 { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2207 char *text = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2208 char *res = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2209 char *label, *value; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2210 const char *state; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2211 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2212 if(jbr->status) { |
27487
7a2891487a00
Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27438
diff
changeset
|
2213 text = g_markup_escape_text(jbr->status, -1); |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2214 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2215 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2216 if(jbr->name) |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2217 res = g_strdup_printf(" (%s)", jbr->name); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2218 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2219 state = jabber_buddy_state_get_name(jbr->state); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2220 if (text != NULL && !purple_utf8_strcasecmp(state, text)) { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2221 g_free(text); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2222 text = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2223 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2224 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2225 label = g_strdup_printf("%s%s", _("Status"), (res ? res : "")); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2226 value = g_strdup_printf("%s%s%s", state, (text ? ": " : ""), (text ? text : "")); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2227 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2228 purple_notify_user_info_add_pair(user_info, label, value); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2229 g_free(label); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2230 g_free(value); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2231 g_free(text); |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2232 |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2233 /* if the resource is idle, show that */ |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2234 /* only show it if there is more than one resource available for |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2235 the buddy, since the "general" idleness will be shown anyway, |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2236 this way we can see see the idleness of lower-priority resources */ |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2237 if (jbr->idle && multiple_resources) { |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2238 gchar *idle_str = |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2239 purple_str_seconds_to_string(time(NULL) - jbr->idle); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2240 label = g_strdup_printf("%s%s", _("Idle"), (res ? res : "")); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2241 purple_notify_user_info_add_pair(user_info, label, idle_str); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2242 g_free(idle_str); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2243 g_free(label); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2244 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2245 g_free(res); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2246 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2247 |
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
|
2248 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2249 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2250 JabberBuddy *jb; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2251 PurpleAccount *account; |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2252 PurpleConnection *gc; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2253 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2254 g_return_if_fail(b != NULL); |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2255 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2256 account = purple_buddy_get_account(b); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2257 g_return_if_fail(account != NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2258 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2259 gc = purple_account_get_connection(account); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2260 g_return_if_fail(gc != NULL); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2261 g_return_if_fail(gc->proto_data != NULL); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2262 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2263 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2264 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2265 if(jb) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2266 JabberBuddyResource *jbr = NULL; |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2267 PurplePresence *presence = purple_buddy_get_presence(b); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2268 const char *sub; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2269 GList *l; |
19723
eedf2918aace
Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
2270 const char *mood; |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2271 gboolean multiple_resources = |
25691
65f2c84f122f
Only show idle time for idle resources in tooltip text when there is more than
Marcus Lundblad <ml@update.uu.se>
parents:
25686
diff
changeset
|
2272 jb->resources && g_list_next(jb->resources); |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2273 JabberBuddyResource *top_jbr = jabber_buddy_find_resource(jb, NULL); |
25697
8202f850ca9e
Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents:
25696
diff
changeset
|
2274 |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2275 /* resource-specific info for the top resource */ |
25698
1ad482221d70
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents:
25697
diff
changeset
|
2276 if (top_jbr) { |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2277 jabber_tooltip_add_resource_text(top_jbr, user_info, |
25698
1ad482221d70
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents:
25697
diff
changeset
|
2278 multiple_resources); |
1ad482221d70
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents:
25697
diff
changeset
|
2279 } |
25697
8202f850ca9e
Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents:
25696
diff
changeset
|
2280 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2281 for(l=jb->resources; l; l = l->next) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2282 jbr = l->data; |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2283 /* the remaining resources */ |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2284 if (jbr != top_jbr) { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2285 jabber_tooltip_add_resource_text(jbr, user_info, |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2286 multiple_resources); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2287 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2288 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2289 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2290 if (full) { |
17846
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17845
diff
changeset
|
2291 PurpleStatus *status; |
23269
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23180
diff
changeset
|
2292 |
29440
1fb503adb2ae
Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents:
29435
diff
changeset
|
2293 status = purple_presence_get_status(presence, "mood"); |
1fb503adb2ae
Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents:
29435
diff
changeset
|
2294 mood = purple_status_get_attr_string(status, PURPLE_MOOD_NAME); |
29433
37be968cd42c
Check that mood is not the empty string, just to be safe.
Richard Laager <rlaager@wiktel.com>
parents:
29431
diff
changeset
|
2295 if(mood && *mood) { |
23269
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23180
diff
changeset
|
2296 const char *moodtext; |
29468
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2297 /* find the mood */ |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2298 PurpleMood *moods = jabber_get_moods(account); |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2299 const char *description = NULL; |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2300 |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2301 for (; moods->mood ; moods++) { |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2302 if (purple_strequal(moods->mood, mood)) { |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2303 description = moods->description; |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2304 break; |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2305 } |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2306 } |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2307 |
29440
1fb503adb2ae
Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@wiktel.com>
parents:
29435
diff
changeset
|
2308 moodtext = purple_status_get_attr_string(status, PURPLE_MOOD_COMMENT); |
29431
b0e7b4daf465
Do not show "Mood: mood ()" when there is no text.
Richard Laager <rlaager@wiktel.com>
parents:
24216
diff
changeset
|
2309 if(moodtext && *moodtext) { |
29468
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2310 char *moodplustext = |
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2311 g_strdup_printf("%s (%s)", description ? _(description) : mood, moodtext); |
23269
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23180
diff
changeset
|
2312 |
17846
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17845
diff
changeset
|
2313 purple_notify_user_info_add_pair(user_info, _("Mood"), moodplustext); |
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17845
diff
changeset
|
2314 g_free(moodplustext); |
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17845
diff
changeset
|
2315 } else |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
2316 purple_notify_user_info_add_pair(user_info, _("Mood"), |
29468
b052a711cfbd
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <ml@update.uu.se>
parents:
29463
diff
changeset
|
2317 description ? _(description) : mood); |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2318 } |
22000
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2319 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) { |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2320 PurpleStatus *tune = purple_presence_get_status(presence, "tune"); |
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2321 const char *title = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE); |
22000
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2322 const char *artist = purple_status_get_attr_string(tune, PURPLE_TUNE_ARTIST); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2323 const char *album = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2324 char *playing = purple_util_format_song_info(title, artist, album, NULL); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2325 if (playing) { |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2326 purple_notify_user_info_add_pair(user_info, _("Now Listening"), playing); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2327 g_free(playing); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2328 } |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2329 } |
25692
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2330 |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2331 if(jb->subscription & JABBER_SUB_FROM) { |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2332 if(jb->subscription & JABBER_SUB_TO) |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2333 sub = _("Both"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2334 else if(jb->subscription & JABBER_SUB_PENDING) |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2335 sub = _("From (To pending)"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2336 else |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2337 sub = _("From"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2338 } else { |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2339 if(jb->subscription & JABBER_SUB_TO) |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2340 sub = _("To"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2341 else if(jb->subscription & JABBER_SUB_PENDING) |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2342 sub = _("None (To pending)"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2343 else |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2344 sub = _("None"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2345 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2346 |
25692
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2347 purple_notify_user_info_add_pair(user_info, _("Subscription"), sub); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25691
diff
changeset
|
2348 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2349 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2350 |
15822 | 2351 if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) { |
2352 purple_notify_user_info_add_pair(user_info, _("Error"), jb->error_msg); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2353 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2354 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2355 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2356 |
16240
547c76fe2e7a
This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@gmail.com>
parents:
16068
diff
changeset
|
2357 GList *jabber_status_types(PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2358 { |
15822 | 2359 PurpleStatusType *type; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2360 GList *types = NULL; |
15822 | 2361 PurpleValue *priority_value; |
25132
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
2362 PurpleValue *buzz_enabled; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2363 |
15822 | 2364 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2365 purple_value_set_int(priority_value, 1); | |
25132
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
2366 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
2367 purple_value_set_boolean(buzz_enabled, TRUE); |
15822 | 2368 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2369 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_ONLINE), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2370 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2371 "priority", _("Priority"), priority_value, |
15822 | 2372 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2373 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2374 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17869
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17866
diff
changeset
|
2375 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
25132
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
2376 "buzz", _("Allow Buzz"), buzz_enabled, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2377 NULL); |
29435
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29433
diff
changeset
|
2378 types = g_list_prepend(types, type); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2379 |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
2380 |
29463
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29458
diff
changeset
|
2381 type = purple_status_type_new_with_attrs(PURPLE_STATUS_MOOD, |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29458
diff
changeset
|
2382 "mood", NULL, TRUE, TRUE, TRUE, |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29458
diff
changeset
|
2383 PURPLE_MOOD_NAME, _("Mood Name"), purple_value_new(PURPLE_TYPE_STRING), |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29458
diff
changeset
|
2384 PURPLE_MOOD_COMMENT, _("Mood Comment"), purple_value_new(PURPLE_TYPE_STRING), |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29458
diff
changeset
|
2385 NULL); |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29458
diff
changeset
|
2386 types = g_list_prepend(types, type); |
f3654983e1da
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <ml@update.uu.se>
parents:
29458
diff
changeset
|
2387 |
15822 | 2388 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2389 purple_value_set_int(priority_value, 1); | |
25221
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
25219
diff
changeset
|
2390 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
25219
diff
changeset
|
2391 purple_value_set_boolean(buzz_enabled, TRUE); |
15822 | 2392 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2393 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_CHAT), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2394 _("Chatty"), TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2395 "priority", _("Priority"), priority_value, |
15822 | 2396 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2397 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2398 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17869
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17866
diff
changeset
|
2399 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
25132
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
2400 "buzz", _("Allow Buzz"), buzz_enabled, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2401 NULL); |
29435
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29433
diff
changeset
|
2402 types = g_list_prepend(types, type); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2403 |
15822 | 2404 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2405 purple_value_set_int(priority_value, 0); | |
25221
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
25219
diff
changeset
|
2406 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
25219
diff
changeset
|
2407 purple_value_set_boolean(buzz_enabled, TRUE); |
15822 | 2408 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2409 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_AWAY), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2410 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2411 "priority", _("Priority"), priority_value, |
15822 | 2412 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2413 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2414 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17869
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17866
diff
changeset
|
2415 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
2416 "buzz", _("Allow Buzz"), buzz_enabled, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2417 NULL); |
29435
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29433
diff
changeset
|
2418 types = g_list_prepend(types, type); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2419 |
15822 | 2420 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2421 purple_value_set_int(priority_value, 0); | |
25221
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
25219
diff
changeset
|
2422 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
25219
diff
changeset
|
2423 purple_value_set_boolean(buzz_enabled, TRUE); |
15822 | 2424 type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2425 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_XA), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2426 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2427 "priority", _("Priority"), priority_value, |
15822 | 2428 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2429 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2430 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17869
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17866
diff
changeset
|
2431 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
2432 "buzz", _("Allow Buzz"), buzz_enabled, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2433 NULL); |
29435
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29433
diff
changeset
|
2434 types = g_list_prepend(types, type); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2435 |
15822 | 2436 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2437 purple_value_set_int(priority_value, 0); | |
2438 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE, | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2439 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_DND), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2440 _("Do Not Disturb"), TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2441 "priority", _("Priority"), priority_value, |
15822 | 2442 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2443 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
2444 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17869
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17866
diff
changeset
|
2445 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2446 NULL); |
29435
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29433
diff
changeset
|
2447 types = g_list_prepend(types, type); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2448 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2449 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2450 if(js->protocol_version == JABBER_PROTO_0_9) |
29435
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29433
diff
changeset
|
2451 "Invisible" |
15373
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 |
15822 | 2454 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2455 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_UNAVAILABLE), |
25412
b5c82724598c
For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24890
diff
changeset
|
2456 NULL, TRUE, TRUE, FALSE, |
15822 | 2457 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2458 NULL); |
29435
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29433
diff
changeset
|
2459 types = g_list_prepend(types, type); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2460 |
20570
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2461 type = purple_status_type_new_with_attrs(PURPLE_STATUS_TUNE, |
24464
3a3d36791a47
I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents:
24216
diff
changeset
|
2462 "tune", NULL, FALSE, TRUE, TRUE, |
20570
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2463 PURPLE_TUNE_ARTIST, _("Tune Artist"), purple_value_new(PURPLE_TYPE_STRING), |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2464 PURPLE_TUNE_TITLE, _("Tune Title"), purple_value_new(PURPLE_TYPE_STRING), |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2465 PURPLE_TUNE_ALBUM, _("Tune Album"), purple_value_new(PURPLE_TYPE_STRING), |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2466 PURPLE_TUNE_GENRE, _("Tune Genre"), purple_value_new(PURPLE_TYPE_STRING), |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2467 PURPLE_TUNE_COMMENT, _("Tune Comment"), purple_value_new(PURPLE_TYPE_STRING), |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2468 PURPLE_TUNE_TRACK, _("Tune Track"), purple_value_new(PURPLE_TYPE_STRING), |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2469 PURPLE_TUNE_TIME, _("Tune Time"), purple_value_new(PURPLE_TYPE_INT), |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2470 PURPLE_TUNE_YEAR, _("Tune Year"), purple_value_new(PURPLE_TYPE_INT), |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2471 PURPLE_TUNE_URL, _("Tune URL"), purple_value_new(PURPLE_TYPE_STRING), |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2472 NULL); |
29435
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29433
diff
changeset
|
2473 types = g_list_prepend(types, type); |
20570
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2474 |
29435
11cb7f2bb6e8
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@wiktel.com>
parents:
29433
diff
changeset
|
2475 return g_list_reverse(types); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2476 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2477 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2478 static void |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
2479 jabber_password_change_result_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
2480 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
2481 xmlnode *packet, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2482 { |
26465
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
2483 if (type == JABBER_IQ_RESULT) { |
15822 | 2484 purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2485 _("Your password has been changed.")); |
21058
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2486 |
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2487 purple_account_set_password(js->gc->account, (char *)data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2488 } else { |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2489 char *msg = jabber_parse_error(js, packet, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2490 |
15822 | 2491 purple_notify_error(js->gc, _("Error changing password"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2492 _("Error changing password"), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2493 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2494 } |
21058
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2495 |
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2496 g_free(data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2497 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2498 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2499 static void jabber_password_change_cb(JabberStream *js, |
15822 | 2500 PurpleRequestFields *fields) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2501 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2502 const char *p1, *p2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2503 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2504 xmlnode *query, *y; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2505 |
15822 | 2506 p1 = purple_request_fields_get_string(fields, "password1"); |
2507 p2 = purple_request_fields_get_string(fields, "password2"); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2508 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2509 if(strcmp(p1, p2)) { |
15822 | 2510 purple_notify_error(js->gc, NULL, _("New passwords do not match."), NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2511 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2512 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2513 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2514 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2515 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2516 xmlnode_set_attrib(iq->node, "to", js->user->domain); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2517 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2518 query = xmlnode_get_child(iq->node, "query"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2519 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2520 y = xmlnode_new_child(query, "username"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2521 xmlnode_insert_data(y, js->user->node, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2522 y = xmlnode_new_child(query, "password"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2523 xmlnode_insert_data(y, p1, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2524 |
21058
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2525 jabber_iq_set_callback(iq, jabber_password_change_result_cb, g_strdup(p1)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2526 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2527 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2528 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2529 |
15822 | 2530 static void jabber_password_change(PurplePluginAction *action) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2531 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2532 |
15822 | 2533 PurpleConnection *gc = (PurpleConnection *) action->context; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2534 JabberStream *js = gc->proto_data; |
15822 | 2535 PurpleRequestFields *fields; |
2536 PurpleRequestFieldGroup *group; | |
2537 PurpleRequestField *field; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2538 |
15822 | 2539 fields = purple_request_fields_new(); |
2540 group = purple_request_field_group_new(NULL); | |
2541 purple_request_fields_add_group(fields, group); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2542 |
15822 | 2543 field = purple_request_field_string_new("password1", _("Password"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2544 "", FALSE); |
15822 | 2545 purple_request_field_string_set_masked(field, TRUE); |
18323
e3df2f61d03d
Make password fileds in Jabber's Change Password dialog required. Fixes #1907
Sean Egan <seanegan@gmail.com>
parents:
18237
diff
changeset
|
2546 purple_request_field_set_required(field, TRUE); |
15822 | 2547 purple_request_field_group_add_field(group, field); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2548 |
15822 | 2549 field = purple_request_field_string_new("password2", _("Password (again)"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2550 "", FALSE); |
15822 | 2551 purple_request_field_string_set_masked(field, TRUE); |
18323
e3df2f61d03d
Make password fileds in Jabber's Change Password dialog required. Fixes #1907
Sean Egan <seanegan@gmail.com>
parents:
18237
diff
changeset
|
2552 purple_request_field_set_required(field, TRUE); |
15822 | 2553 purple_request_field_group_add_field(group, field); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2554 |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2555 purple_request_fields(js->gc, _("Change XMPP Password"), |
16904
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16811
diff
changeset
|
2556 _("Change XMPP Password"), _("Please enter your new password"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2557 fields, _("OK"), G_CALLBACK(jabber_password_change_cb), |
16439
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16240
diff
changeset
|
2558 _("Cancel"), NULL, |
19999
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19723
diff
changeset
|
2559 purple_connection_get_account(gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2560 js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2561 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2562 |
16240
547c76fe2e7a
This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@gmail.com>
parents:
16068
diff
changeset
|
2563 GList *jabber_actions(PurplePlugin *plugin, gpointer context) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2564 { |
17848
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17846
diff
changeset
|
2565 PurpleConnection *gc = (PurpleConnection *) context; |
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17846
diff
changeset
|
2566 JabberStream *js = gc->proto_data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2567 GList *m = NULL; |
15822 | 2568 PurplePluginAction *act; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2569 |
15822 | 2570 act = purple_plugin_action_new(_("Set User Info..."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2571 jabber_setup_set_info); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2572 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2573 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2574 /* if (js->protocol_options & CHANGE_PASSWORD) { */ |
15822 | 2575 act = purple_plugin_action_new(_("Change Password..."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2576 jabber_password_change); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2577 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2578 /* } */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2579 |
15822 | 2580 act = purple_plugin_action_new(_("Search for Users..."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2581 jabber_user_search_begin); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2582 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2583 |
17849
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17848
diff
changeset
|
2584 purple_debug_info("jabber", "jabber_actions: have pep: %s\n", js->pep?"YES":"NO"); |
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17848
diff
changeset
|
2585 |
17848
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17846
diff
changeset
|
2586 if(js->pep) |
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17846
diff
changeset
|
2587 jabber_pep_init_actions(&m); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
2588 |
17883
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
2589 if(js->commands) |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17881
diff
changeset
|
2590 jabber_adhoc_init_server_commands(js, &m); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2591 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2592 return m; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2593 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2594 |
16240
547c76fe2e7a
This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@gmail.com>
parents:
16068
diff
changeset
|
2595 PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2596 { |
15822 | 2597 PurpleBlistNode *gnode, *cnode; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2598 JabberID *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2599 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2600 if(!(jid = jabber_id_new(name))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2601 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2602 |
25798
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2603 for(gnode = purple_blist_get_root(); gnode; |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2604 gnode = purple_blist_node_get_sibling_next(gnode)) { |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2605 for(cnode = purple_blist_node_get_first_child(gnode); |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2606 cnode; |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2607 cnode = purple_blist_node_get_sibling_next(cnode)) { |
15822 | 2608 PurpleChat *chat = (PurpleChat*)cnode; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2609 const char *room, *server; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2610 GHashTable *components; |
15822 | 2611 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode)) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2612 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2613 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2614 if (purple_chat_get_account(chat) != account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2615 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2616 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2617 components = purple_chat_get_components(chat); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2618 if(!(room = g_hash_table_lookup(components, "room"))) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2619 continue; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2620 if(!(server = g_hash_table_lookup(components, "server"))) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2621 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2622 |
31229
05c45d8f2ce3
jabber: Use a straight equality check instead of collate
Paul Aurich <paul@darkrain42.org>
parents:
31086
diff
changeset
|
2623 /* FIXME: Collate is wrong in a few cases here; this should be prepped */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2624 if(jid->node && jid->domain && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2625 !g_utf8_collate(room, jid->node) && !g_utf8_collate(server, jid->domain)) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2626 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2627 return chat; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2628 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2629 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2630 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2631 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2632 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2633 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2634 |
16240
547c76fe2e7a
This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@gmail.com>
parents:
16068
diff
changeset
|
2635 void jabber_convo_closed(PurpleConnection *gc, const char *who) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2636 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2637 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2638 JabberID *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2639 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2640 JabberBuddyResource *jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2641 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2642 if(!(jid = jabber_id_new(who))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2643 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2644 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2645 if((jb = jabber_buddy_find(js, who, TRUE)) && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2646 (jbr = jabber_buddy_find_resource(jb, jid->resource))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2647 if(jbr->thread_id) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2648 g_free(jbr->thread_id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2649 jbr->thread_id = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2650 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2651 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2652 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2653 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2654 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2655 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2656 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2657 char *jabber_parse_error(JabberStream *js, |
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2658 xmlnode *packet, |
21358 | 2659 PurpleConnectionError *reason) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2660 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2661 xmlnode *error; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2662 const char *code = NULL, *text = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2663 const char *xmlns = xmlnode_get_namespace(packet); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2664 char *cdata = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2665 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2666 #define SET_REASON(x) \ |
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2667 if(reason != NULL) { *reason = x; } |
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2668 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2669 if((error = xmlnode_get_child(packet, "error"))) { |
30574
4f6273c899b9
jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents:
30536
diff
changeset
|
2670 xmlnode *t = xmlnode_get_child_with_namespace(error, "text", NS_XMPP_STANZAS); |
4f6273c899b9
jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents:
30536
diff
changeset
|
2671 if (t) |
4f6273c899b9
jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents:
30536
diff
changeset
|
2672 cdata = xmlnode_get_data(t); |
4f6273c899b9
jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents:
30536
diff
changeset
|
2673 #if 0 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2674 cdata = xmlnode_get_data(error); |
30574
4f6273c899b9
jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents:
30536
diff
changeset
|
2675 #endif |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2676 code = xmlnode_get_attrib(error, "code"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2677 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2678 /* Stanza errors */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2679 if(xmlnode_get_child(error, "bad-request")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2680 text = _("Bad Request"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2681 } else if(xmlnode_get_child(error, "conflict")) { |
30574
4f6273c899b9
jabber: Catch resource conflict IQ stanza errors returned by server
Paul Aurich <paul@darkrain42.org>
parents:
30536
diff
changeset
|
2682 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2683 text = _("Conflict"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2684 } else if(xmlnode_get_child(error, "feature-not-implemented")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2685 text = _("Feature Not Implemented"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2686 } else if(xmlnode_get_child(error, "forbidden")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2687 text = _("Forbidden"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2688 } else if(xmlnode_get_child(error, "gone")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2689 text = _("Gone"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2690 } else if(xmlnode_get_child(error, "internal-server-error")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2691 text = _("Internal Server Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2692 } else if(xmlnode_get_child(error, "item-not-found")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2693 text = _("Item Not Found"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2694 } else if(xmlnode_get_child(error, "jid-malformed")) { |
16904
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16811
diff
changeset
|
2695 text = _("Malformed XMPP ID"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2696 } else if(xmlnode_get_child(error, "not-acceptable")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2697 text = _("Not Acceptable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2698 } else if(xmlnode_get_child(error, "not-allowed")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2699 text = _("Not Allowed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2700 } else if(xmlnode_get_child(error, "not-authorized")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2701 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2702 } else if(xmlnode_get_child(error, "payment-required")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2703 text = _("Payment Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2704 } else if(xmlnode_get_child(error, "recipient-unavailable")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2705 text = _("Recipient Unavailable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2706 } else if(xmlnode_get_child(error, "redirect")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2707 /* XXX */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2708 } else if(xmlnode_get_child(error, "registration-required")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2709 text = _("Registration Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2710 } else if(xmlnode_get_child(error, "remote-server-not-found")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2711 text = _("Remote Server Not Found"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2712 } else if(xmlnode_get_child(error, "remote-server-timeout")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2713 text = _("Remote Server Timeout"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2714 } else if(xmlnode_get_child(error, "resource-constraint")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2715 text = _("Server Overloaded"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2716 } else if(xmlnode_get_child(error, "service-unavailable")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2717 text = _("Service Unavailable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2718 } else if(xmlnode_get_child(error, "subscription-required")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2719 text = _("Subscription Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2720 } else if(xmlnode_get_child(error, "unexpected-request")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2721 text = _("Unexpected Request"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2722 } else if(xmlnode_get_child(error, "undefined-condition")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2723 text = _("Unknown Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2724 } |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
2725 } else if(xmlns && !strcmp(xmlns, NS_XMPP_SASL)) { |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2726 /* Most common reason can be the default */ |
21363
b4833db5eed0
Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <will.thompson@collabora.co.uk>
parents:
21360
diff
changeset
|
2727 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2728 if(xmlnode_get_child(packet, "aborted")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2729 text = _("Authorization Aborted"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2730 } else if(xmlnode_get_child(packet, "incorrect-encoding")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2731 text = _("Incorrect encoding in authorization"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2732 } else if(xmlnode_get_child(packet, "invalid-authzid")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2733 text = _("Invalid authzid"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2734 } else if(xmlnode_get_child(packet, "invalid-mechanism")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2735 text = _("Invalid Authorization Mechanism"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2736 } else if(xmlnode_get_child(packet, "mechanism-too-weak")) { |
21363
b4833db5eed0
Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <will.thompson@collabora.co.uk>
parents:
21360
diff
changeset
|
2737 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2738 text = _("Authorization mechanism too weak"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2739 } else if(xmlnode_get_child(packet, "not-authorized")) { |
21363
b4833db5eed0
Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <will.thompson@collabora.co.uk>
parents:
21360
diff
changeset
|
2740 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED); |
19999
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19723
diff
changeset
|
2741 /* Clear the pasword if it isn't being saved */ |
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19723
diff
changeset
|
2742 if (!purple_account_get_remember_password(js->gc->account)) |
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19723
diff
changeset
|
2743 purple_account_set_password(js->gc->account, NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2744 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2745 } else if(xmlnode_get_child(packet, "temporary-auth-failure")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2746 text = _("Temporary Authentication Failure"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2747 } else { |
21363
b4833db5eed0
Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <will.thompson@collabora.co.uk>
parents:
21360
diff
changeset
|
2748 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2749 text = _("Authentication Failure"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2750 } |
15916
4be5d38ee117
Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <mark@kingant.net>
parents:
15914
diff
changeset
|
2751 } else if(!strcmp(packet->name, "stream:error") || |
20851
4888d00c50f0
Make sure that the xmlns isn't null before dereferencing it to fix CID 320.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20740
diff
changeset
|
2752 (!strcmp(packet->name, "error") && xmlns && |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
2753 !strcmp(xmlns, NS_XMPP_STREAMS))) { |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2754 /* Most common reason as default: */ |
21358 | 2755 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2756 if(xmlnode_get_child(packet, "bad-format")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2757 text = _("Bad Format"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2758 } else if(xmlnode_get_child(packet, "bad-namespace-prefix")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2759 text = _("Bad Namespace Prefix"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2760 } else if(xmlnode_get_child(packet, "conflict")) { |
21358 | 2761 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2762 text = _("Resource Conflict"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2763 } else if(xmlnode_get_child(packet, "connection-timeout")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2764 text = _("Connection Timeout"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2765 } else if(xmlnode_get_child(packet, "host-gone")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2766 text = _("Host Gone"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2767 } else if(xmlnode_get_child(packet, "host-unknown")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2768 text = _("Host Unknown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2769 } else if(xmlnode_get_child(packet, "improper-addressing")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2770 text = _("Improper Addressing"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2771 } else if(xmlnode_get_child(packet, "internal-server-error")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2772 text = _("Internal Server Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2773 } else if(xmlnode_get_child(packet, "invalid-id")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2774 text = _("Invalid ID"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2775 } else if(xmlnode_get_child(packet, "invalid-namespace")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2776 text = _("Invalid Namespace"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2777 } else if(xmlnode_get_child(packet, "invalid-xml")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2778 text = _("Invalid XML"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2779 } else if(xmlnode_get_child(packet, "nonmatching-hosts")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2780 text = _("Non-matching Hosts"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2781 } else if(xmlnode_get_child(packet, "not-authorized")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2782 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2783 } else if(xmlnode_get_child(packet, "policy-violation")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2784 text = _("Policy Violation"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2785 } else if(xmlnode_get_child(packet, "remote-connection-failed")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2786 text = _("Remote Connection Failed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2787 } else if(xmlnode_get_child(packet, "resource-constraint")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2788 text = _("Resource Constraint"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2789 } else if(xmlnode_get_child(packet, "restricted-xml")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2790 text = _("Restricted XML"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2791 } else if(xmlnode_get_child(packet, "see-other-host")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2792 text = _("See Other Host"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2793 } else if(xmlnode_get_child(packet, "system-shutdown")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2794 text = _("System Shutdown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2795 } else if(xmlnode_get_child(packet, "undefined-condition")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2796 text = _("Undefined Condition"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2797 } else if(xmlnode_get_child(packet, "unsupported-encoding")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2798 text = _("Unsupported Encoding"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2799 } else if(xmlnode_get_child(packet, "unsupported-stanza-type")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2800 text = _("Unsupported Stanza Type"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2801 } else if(xmlnode_get_child(packet, "unsupported-version")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2802 text = _("Unsupported Version"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2803 } else if(xmlnode_get_child(packet, "xml-not-well-formed")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2804 text = _("XML Not Well Formed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2805 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2806 text = _("Stream Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2807 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2808 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2809 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2810 #undef SET_REASON |
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2811 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2812 if(text || cdata) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2813 char *ret = g_strdup_printf("%s%s%s", code ? code : "", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2814 code ? ": " : "", text ? text : cdata); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2815 g_free(cdata); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2816 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2817 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2818 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2819 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2820 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2821 |
15822 | 2822 static PurpleCmdRet jabber_cmd_chat_config(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2823 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2824 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2825 JabberChat *chat = jabber_chat_find_by_conv(conv); |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2826 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2827 if (!chat) |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2828 return PURPLE_CMD_RET_FAILED; |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2829 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2830 jabber_chat_request_room_configure(chat); |
15822 | 2831 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2832 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2833 |
15822 | 2834 static PurpleCmdRet jabber_cmd_chat_register(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2835 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2836 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2837 JabberChat *chat = jabber_chat_find_by_conv(conv); |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2838 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2839 if (!chat) |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2840 return PURPLE_CMD_RET_FAILED; |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2841 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2842 jabber_chat_register(chat); |
15822 | 2843 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2844 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2845 |
15822 | 2846 static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2847 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2848 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2849 JabberChat *chat = jabber_chat_find_by_conv(conv); |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2850 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2851 if (!chat) |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2852 return PURPLE_CMD_RET_FAILED; |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2853 |
26684
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2854 if (args && args[0] && *args[0]) |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2855 jabber_chat_change_topic(chat, args[0]); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2856 else { |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2857 const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv)); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2858 char *buf, *tmp, *tmp2; |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2859 |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2860 if (cur) { |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2861 tmp = g_markup_escape_text(cur, -1); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2862 tmp2 = purple_markup_linkify(tmp); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2863 buf = g_strdup_printf(_("current topic is: %s"), tmp2); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2864 g_free(tmp); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2865 g_free(tmp2); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2866 } else |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2867 buf = g_strdup(_("No topic is set")); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2868 purple_conv_chat_write(PURPLE_CONV_CHAT(conv), "", buf, |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2869 PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL)); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2870 g_free(buf); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2871 } |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2872 |
15822 | 2873 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2874 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2875 |
15822 | 2876 static PurpleCmdRet jabber_cmd_chat_nick(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2877 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2878 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2879 JabberChat *chat = jabber_chat_find_by_conv(conv); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2880 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2881 if(!chat || !args || !args[0]) |
15822 | 2882 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2883 |
28421
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28396
diff
changeset
|
2884 if (!jabber_resourceprep_validate(args[0])) { |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28396
diff
changeset
|
2885 *error = g_strdup(_("Invalid nickname")); |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28396
diff
changeset
|
2886 return PURPLE_CMD_RET_FAILED; |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28396
diff
changeset
|
2887 } |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28396
diff
changeset
|
2888 |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28396
diff
changeset
|
2889 if (jabber_chat_change_nick(chat, args[0])) |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28396
diff
changeset
|
2890 return PURPLE_CMD_RET_OK; |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28396
diff
changeset
|
2891 else |
a335d1bab20e
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <paul@darkrain42.org>
parents:
28396
diff
changeset
|
2892 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2893 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2894 |
15822 | 2895 static PurpleCmdRet jabber_cmd_chat_part(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2896 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2897 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2898 JabberChat *chat = jabber_chat_find_by_conv(conv); |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2899 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2900 if (!chat) |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2901 return PURPLE_CMD_RET_FAILED; |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2902 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2903 jabber_chat_part(chat, args ? args[0] : NULL); |
15822 | 2904 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2905 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2906 |
15822 | 2907 static PurpleCmdRet jabber_cmd_chat_ban(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2908 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2909 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2910 JabberChat *chat = jabber_chat_find_by_conv(conv); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2911 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2912 if(!chat || !args || !args[0]) |
15822 | 2913 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2914 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2915 if(!jabber_chat_ban_user(chat, args[0], args[1])) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2916 *error = g_strdup_printf(_("Unable to ban user %s"), args[0]); |
15822 | 2917 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2918 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2919 |
15822 | 2920 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2921 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2922 |
15822 | 2923 static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2924 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2925 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2926 JabberChat *chat = jabber_chat_find_by_conv(conv); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2927 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2928 if (!chat || !args || !args[0]) |
15822 | 2929 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2930 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2931 if (strcmp(args[0], "owner") != 0 && |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2932 strcmp(args[0], "admin") != 0 && |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2933 strcmp(args[0], "member") != 0 && |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2934 strcmp(args[0], "outcast") != 0 && |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2935 strcmp(args[0], "none") != 0) { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2936 *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[0]); |
15822 | 2937 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2938 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2939 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2940 if (args[1]) { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2941 int i; |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2942 char **nicks = g_strsplit(args[1], " ", -1); |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2943 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2944 for (i = 0; nicks[i]; ++i) |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2945 if (!jabber_chat_affiliate_user(chat, nicks[i], args[0])) { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2946 *error = g_strdup_printf(_("Unable to affiliate user %s as \"%s\""), nicks[i], args[0]); |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2947 g_strfreev(nicks); |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2948 return PURPLE_CMD_RET_FAILED; |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2949 } |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2950 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2951 g_strfreev(nicks); |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2952 } else { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2953 jabber_chat_affiliation_list(chat, args[0]); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2954 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2955 |
15822 | 2956 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2957 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2958 |
15822 | 2959 static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2960 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2961 { |
18855
28a7c9dbbc2b
Fix uninitialized variable access.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18711
diff
changeset
|
2962 JabberChat *chat = jabber_chat_find_by_conv(conv); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2963 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2964 if (!chat || !args || !args[0]) |
15822 | 2965 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2966 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2967 if (strcmp(args[0], "moderator") != 0 && |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2968 strcmp(args[0], "participant") != 0 && |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2969 strcmp(args[0], "visitor") != 0 && |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2970 strcmp(args[0], "none") != 0) { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2971 *error = g_strdup_printf(_("Unknown role: \"%s\""), args[0]); |
15822 | 2972 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2973 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2974 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2975 if (args[1]) { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2976 int i; |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2977 char **nicks = g_strsplit(args[1], " ", -1); |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2978 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2979 for (i = 0; nicks[i]; i++) |
29070
c8b407fec879
jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <paul@darkrain42.org>
parents:
29068
diff
changeset
|
2980 if (!jabber_chat_role_user(chat, nicks[i], args[0], NULL)) { |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2981 *error = g_strdup_printf(_("Unable to set role \"%s\" for user: %s"), |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2982 args[0], nicks[i]); |
29068
403a53ff9aa4
jabber: Possible leaks--;
Paul Aurich <paul@darkrain42.org>
parents:
29047
diff
changeset
|
2983 g_strfreev(nicks); |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2984 return PURPLE_CMD_RET_FAILED; |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2985 } |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2986 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2987 g_strfreev(nicks); |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2988 } else { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2989 jabber_chat_role_list(chat, args[0]); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2990 } |
15822 | 2991 return PURPLE_CMD_RET_OK; |
15373
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 |
15822 | 2994 static PurpleCmdRet jabber_cmd_chat_invite(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2995 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2996 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2997 if(!args || !args[0]) |
15822 | 2998 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2999 |
15822 | 3000 jabber_chat_invite(purple_conversation_get_gc(conv), |
3001 purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), args[1] ? args[1] : "", | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3002 args[0]); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3003 |
15822 | 3004 return PURPLE_CMD_RET_OK; |
15373
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 |
15822 | 3007 static PurpleCmdRet jabber_cmd_chat_join(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3008 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3009 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3010 JabberChat *chat = jabber_chat_find_by_conv(conv); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3011 GHashTable *components; |
31740
bcf0b8ba1a79
jabber: Fix /join behavior. Closes #14205.
Paul Aurich <paul@darkrain42.org>
parents:
31704
diff
changeset
|
3012 JabberID *jid = NULL; |
31307
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3013 const char *room = NULL, *server = NULL, *handle = NULL; |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3014 |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3015 if (!chat || !args || !args[0]) |
15822 | 3016 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3017 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3018 components = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3019 |
31740
bcf0b8ba1a79
jabber: Fix /join behavior. Closes #14205.
Paul Aurich <paul@darkrain42.org>
parents:
31704
diff
changeset
|
3020 if (strchr(args[0], '@')) |
bcf0b8ba1a79
jabber: Fix /join behavior. Closes #14205.
Paul Aurich <paul@darkrain42.org>
parents:
31704
diff
changeset
|
3021 jid = jabber_id_new(args[0]); |
31307
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3022 if (jid) { |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3023 room = jid->node; |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3024 server = jid->domain; |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3025 handle = jid->resource ? jid->resource : chat->handle; |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3026 } else { |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3027 /* If jabber_id_new failed, the user may have just passed in |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3028 * a room name. For backward compatibility, handle that here. |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3029 */ |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3030 if (strchr(args[0], '@')) { |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3031 *error = g_strdup(_("Invalid XMPP ID")); |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3032 return PURPLE_CMD_RET_FAILED; |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3033 } |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3034 |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3035 room = args[0]; |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3036 server = chat->server; |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3037 handle = chat->handle; |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3038 } |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3039 |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3040 g_hash_table_insert(components, "room", (gpointer)room); |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3041 g_hash_table_insert(components, "server", (gpointer)server); |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3042 g_hash_table_insert(components, "handle", (gpointer)handle); |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3043 |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3044 if (args[1]) |
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3045 g_hash_table_insert(components, "password", args[1]); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3046 |
15822 | 3047 jabber_chat_join(purple_conversation_get_gc(conv), components); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3048 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3049 g_hash_table_destroy(components); |
31307
9d8a47ca14a1
jabber: Add support for joining a room based not on the current server.
Paul Aurich <paul@darkrain42.org>
parents:
31239
diff
changeset
|
3050 jabber_id_free(jid); |
15822 | 3051 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3052 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3053 |
15822 | 3054 static PurpleCmdRet jabber_cmd_chat_kick(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3055 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3056 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3057 JabberChat *chat = jabber_chat_find_by_conv(conv); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3058 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
3059 if(!chat || !args || !args[0]) |
15822 | 3060 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3061 |
29070
c8b407fec879
jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <paul@darkrain42.org>
parents:
29068
diff
changeset
|
3062 if(!jabber_chat_role_user(chat, args[0], "none", args[1])) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3063 *error = g_strdup_printf(_("Unable to kick user %s"), args[0]); |
15822 | 3064 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3065 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3066 |
15822 | 3067 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3068 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3069 |
15822 | 3070 static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3071 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3072 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3073 JabberChat *chat = jabber_chat_find_by_conv(conv); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3074 char *who; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3075 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
3076 if (!chat) |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
3077 return PURPLE_CMD_RET_FAILED; |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
3078 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3079 who = g_strdup_printf("%s@%s/%s", chat->room, chat->server, args[0]); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3080 |
15822 | 3081 jabber_message_send_im(purple_conversation_get_gc(conv), who, args[1], 0); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3082 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3083 g_free(who); |
15822 | 3084 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3085 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3086 |
17835
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3087 static PurpleCmdRet jabber_cmd_ping(PurpleConversation *conv, |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3088 const char *cmd, char **args, char **error, void *data) |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3089 { |
25980
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
3090 PurpleAccount *account; |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
3091 PurpleConnection *pc; |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
3092 |
17835
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3093 if(!args || !args[0]) |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3094 return PURPLE_CMD_RET_FAILED; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3095 |
25980
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
3096 account = purple_conversation_get_account(conv); |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
3097 pc = purple_account_get_connection(account); |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
3098 |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
3099 if(!jabber_ping_jid(purple_connection_get_protocol_data(pc), args[0])) { |
17835
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3100 *error = g_strdup_printf(_("Unable to ping user %s"), args[0]); |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3101 return PURPLE_CMD_RET_FAILED; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3102 } |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3103 |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3104 return PURPLE_CMD_RET_OK; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3105 } |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
3106 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3107 static gboolean _jabber_send_buzz(JabberStream *js, const char *username, char **error) { |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3108 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3109 JabberBuddy *jb; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3110 JabberBuddyResource *jbr; |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3111 PurpleConnection *gc = js->gc; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
3112 PurpleBuddy *buddy = |
25708
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25706
diff
changeset
|
3113 purple_find_buddy(purple_connection_get_account(gc), username); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
3114 const gchar *alias = |
25708
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25706
diff
changeset
|
3115 buddy ? purple_buddy_get_contact_alias(buddy) : username; |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3116 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3117 if(!username) |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3118 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3119 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3120 jb = jabber_buddy_find(js, username, FALSE); |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3121 if(!jb) { |
25708
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25706
diff
changeset
|
3122 *error = g_strdup_printf(_("Unable to buzz, because there is nothing " |
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25706
diff
changeset
|
3123 "known about %s."), alias); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3124 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3125 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3126 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3127 jbr = jabber_buddy_find_resource(jb, NULL); |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3128 if (!jbr) { |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
3129 *error = g_strdup_printf(_("Unable to buzz, because %s might be offline."), |
25708
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25706
diff
changeset
|
3130 alias); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3131 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3132 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3133 |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3134 if (jabber_resource_has_capability(jbr, NS_ATTENTION)) { |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3135 xmlnode *buzz, *msg = xmlnode_new("message"); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3136 gchar *to; |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
3137 |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3138 to = g_strdup_printf("%s/%s", username, jbr->name); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3139 xmlnode_set_attrib(msg, "to", to); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3140 g_free(to); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3141 |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3142 /* avoid offline storage */ |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3143 xmlnode_set_attrib(msg, "type", "headline"); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3144 |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3145 buzz = xmlnode_new_child(msg, "attention"); |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3146 xmlnode_set_namespace(buzz, NS_ATTENTION); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3147 |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3148 jabber_send(js, msg); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3149 xmlnode_free(msg); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3150 |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3151 return TRUE; |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3152 } else { |
25708
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25706
diff
changeset
|
3153 *error = g_strdup_printf(_("Unable to buzz, because %s does " |
25981
7ace7bf0bfad
Use "does" here sounds more natural to me
Mark Doliner <mark@kingant.net>
parents:
25952
diff
changeset
|
3154 "not support it or does not wish to receive buzzes now."), alias); |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3155 return FALSE; |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3156 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3157 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3158 |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3159 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv, |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3160 const char *cmd, char **args, char **error, void *data) |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3161 { |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3162 JabberStream *js = conv->account->gc->proto_data; |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3163 const gchar *who; |
29278
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3164 gchar *description; |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3165 PurpleBuddy *buddy; |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3166 const char *alias; |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
3167 PurpleAttentionType *attn = |
29278
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3168 purple_get_attention_type_from_code(conv->account, 0); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
3169 |
25136
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3170 if (!args || !args[0]) { |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3171 /* use the buddy from conversation, if it's a one-to-one conversation */ |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3172 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3173 who = purple_conversation_get_name(conv); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3174 } else { |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3175 return PURPLE_CMD_RET_FAILED; |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3176 } |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3177 } else { |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3178 who = args[0]; |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
3179 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
3180 |
29278
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3181 buddy = purple_find_buddy(conv->account, who); |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3182 if (buddy != NULL) |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3183 alias = purple_buddy_get_contact_alias(buddy); |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3184 else |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3185 alias = who; |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
3186 |
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
3187 description = |
29278
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3188 g_strdup_printf(purple_attention_type_get_outgoing_desc(attn), alias); |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
3189 purple_conversation_write(conv, NULL, description, |
29278
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3190 PURPLE_MESSAGE_NOTIFY | PURPLE_MESSAGE_SYSTEM, time(NULL)); |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3191 g_free(description); |
68f6de7d1408
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <ml@update.uu.se>
parents:
29275
diff
changeset
|
3192 return _jabber_send_buzz(js, who, error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED; |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3193 } |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3194 |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3195 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
|
3196 { |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3197 static GList *types = NULL; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3198 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3199 if (!types) { |
22097
eab7d03edfcb
This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22034
diff
changeset
|
3200 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
|
3201 _("%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
|
3202 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3203 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3204 return types; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3205 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3206 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3207 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
|
3208 { |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3209 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
|
3210 gchar *error = NULL; |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3211 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3212 if (!_jabber_send_buzz(js, username, &error)) { |
29503
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29492
diff
changeset
|
3213 PurpleAccount *account = purple_connection_get_account(gc); |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29492
diff
changeset
|
3214 PurpleConversation *conv = |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29492
diff
changeset
|
3215 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
|
3216 purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)"); |
29503
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29492
diff
changeset
|
3217 |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29492
diff
changeset
|
3218 if (conv) { |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29492
diff
changeset
|
3219 purple_conversation_write(conv, username, error, PURPLE_MESSAGE_ERROR, |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29492
diff
changeset
|
3220 time(NULL)); |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29492
diff
changeset
|
3221 } |
7adebf6acc50
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <ml@update.uu.se>
parents:
29492
diff
changeset
|
3222 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3223 g_free(error); |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3224 return FALSE; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3225 } |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3226 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
3227 return TRUE; |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3228 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3229 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
3230 |
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
|
3231 gboolean jabber_offline_message(const PurpleBuddy *buddy) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3232 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3233 return TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3234 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3235 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3236 #ifdef USE_VV |
26457
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26454
diff
changeset
|
3237 gboolean |
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26454
diff
changeset
|
3238 jabber_audio_enabled(JabberStream *js, const char *namespace) |
26453
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3239 { |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3240 PurpleMediaManager *manager = purple_media_manager_get(); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3241 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3242 |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3243 return (caps & (PURPLE_MEDIA_CAPS_AUDIO | PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION)); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3244 } |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3245 |
26997
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26987
diff
changeset
|
3246 gboolean |
26457
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26454
diff
changeset
|
3247 jabber_video_enabled(JabberStream *js, const char *namespace) |
26453
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3248 { |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3249 PurpleMediaManager *manager = purple_media_manager_get(); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3250 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3251 |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3252 return (caps & (PURPLE_MEDIA_CAPS_VIDEO | PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION)); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3253 } |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3254 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3255 typedef struct { |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3256 PurpleAccount *account; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3257 gchar *who; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3258 PurpleMediaSessionType type; |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
3259 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3260 } JabberMediaRequest; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3261 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3262 static void |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3263 jabber_media_cancel_cb(JabberMediaRequest *request, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3264 PurpleRequestFields *fields) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3265 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3266 g_free(request->who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3267 g_free(request); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3268 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3269 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3270 static void |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3271 jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestFields *fields) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3272 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3273 PurpleRequestField *field = |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3274 purple_request_fields_get_field(fields, "resource"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3275 int selected_id = purple_request_field_choice_get_value(field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3276 GList *labels = purple_request_field_choice_get_labels(field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3277 gchar *who = g_strdup_printf("%s/%s", request->who, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3278 (gchar*)g_list_nth_data(labels, selected_id)); |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3279 jabber_initiate_media(request->account, who, request->type); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3280 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3281 g_free(who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3282 g_free(request->who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3283 g_free(request); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3284 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3285 #endif |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3286 |
26365
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26335
diff
changeset
|
3287 gboolean |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
3288 jabber_initiate_media(PurpleAccount *account, const char *who, |
23869
551a462b346a
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23867
diff
changeset
|
3289 PurpleMediaSessionType type) |
23787
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
3290 { |
26334
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26279
diff
changeset
|
3291 #ifdef USE_VV |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3292 JabberStream *js = (JabberStream *) |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3293 purple_account_get_connection(account)->proto_data; |
25005
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3294 JabberBuddy *jb; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3295 JabberBuddyResource *jbr = NULL; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3296 char *resource; |
25005
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3297 |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3298 if (!js) { |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3299 purple_debug_error("jabber", |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3300 "jabber_initiate_media: NULL stream\n"); |
26365
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26335
diff
changeset
|
3301 return FALSE; |
25005
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3302 } |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3303 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3304 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3305 if((resource = jabber_get_resource(who)) != NULL) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3306 /* they've specified a resource, no need to ask or |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3307 * default or anything, just do it */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3308 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3309 jb = jabber_buddy_find(js, who, FALSE); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3310 jbr = jabber_buddy_find_resource(jb, resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3311 g_free(resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3312 |
30536
8737d2e4b297
restore the Jingle method selection to prefer standard over Google-specific
Marcus Lundblad <ml@update.uu.se>
parents:
30528
diff
changeset
|
3313 if (type & PURPLE_MEDIA_AUDIO && |
8737d2e4b297
restore the Jingle method selection to prefer standard over Google-specific
Marcus Lundblad <ml@update.uu.se>
parents:
30528
diff
changeset
|
3314 !jabber_resource_has_capability(jbr, |
8737d2e4b297
restore the Jingle method selection to prefer standard over Google-specific
Marcus Lundblad <ml@update.uu.se>
parents:
30528
diff
changeset
|
3315 JINGLE_APP_RTP_SUPPORT_AUDIO) && |
8737d2e4b297
restore the Jingle method selection to prefer standard over Google-specific
Marcus Lundblad <ml@update.uu.se>
parents:
30528
diff
changeset
|
3316 jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE)) |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3317 return jabber_google_session_initiate(js, who, type); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3318 else |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3319 return jingle_rtp_initiate_media(js, who, type); |
25005
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3320 } |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3321 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3322 jb = jabber_buddy_find(js, who, FALSE); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3323 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3324 if(!jb || !jb->resources) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3325 /* no resources online, we're trying to initiate with someone |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3326 * whose presence we're not subscribed to, or |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3327 * someone who is offline. Let's inform the user */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3328 char *msg; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3329 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3330 if(!jb) { |
26436
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26432
diff
changeset
|
3331 msg = g_strdup_printf(_("Unable to initiate media with %s: invalid JID"), who); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3332 } else if(jb->subscription & JABBER_SUB_TO) { |
26436
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26432
diff
changeset
|
3333 msg = g_strdup_printf(_("Unable to initiate media with %s: user is not online"), who); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3334 } else { |
26436
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26432
diff
changeset
|
3335 msg = g_strdup_printf(_("Unable to initiate media with %s: not subscribed to user presence"), who); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3336 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3337 |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3338 purple_notify_error(account, _("Media Initiation Failed"), |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3339 _("Media Initiation Failed"), msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3340 g_free(msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3341 return FALSE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3342 } else if(!jb->resources->next) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3343 /* only 1 resource online (probably our most common case) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3344 * so no need to ask who to initiate with */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3345 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3346 gboolean result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3347 jbr = jb->resources->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3348 name = g_strdup_printf("%s/%s", who, jbr->name); |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3349 result = jabber_initiate_media(account, name, type); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3350 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3351 return result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3352 } else { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3353 /* we've got multiple resources, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3354 * we need to pick one to initiate with */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3355 GList *l; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3356 char *msg; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3357 PurpleRequestFields *fields; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3358 PurpleRequestField *field = purple_request_field_choice_new( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3359 "resource", _("Resource"), 0); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3360 PurpleRequestFieldGroup *group; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3361 JabberMediaRequest *request; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3362 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3363 for(l = jb->resources; l; l = l->next) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3364 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3365 JabberBuddyResource *ljbr = l->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3366 PurpleMediaCaps caps; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3367 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3368 name = g_strdup_printf("%s/%s", who, ljbr->name); |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3369 caps = jabber_get_media_caps(account, name); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3370 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3371 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3372 if ((type & PURPLE_MEDIA_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3373 (type & PURPLE_MEDIA_VIDEO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3374 if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3375 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3376 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3377 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3378 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3379 } else if (type & (PURPLE_MEDIA_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3380 (caps & PURPLE_MEDIA_CAPS_AUDIO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3381 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3382 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3383 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3384 }else if (type & (PURPLE_MEDIA_VIDEO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3385 (caps & PURPLE_MEDIA_CAPS_VIDEO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3386 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3387 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3388 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3389 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3390 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3391 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3392 if (jbr == NULL) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3393 purple_debug_error("jabber", |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3394 "No resources available\n"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3395 return FALSE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3396 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3397 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3398 if (g_list_length(purple_request_field_choice_get_labels( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3399 field)) <= 1) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3400 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3401 gboolean result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3402 purple_request_field_destroy(field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3403 name = g_strdup_printf("%s/%s", who, jbr->name); |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3404 result = jabber_initiate_media(account, name, type); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3405 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3406 return result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3407 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3408 |
26436
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26432
diff
changeset
|
3409 msg = g_strdup_printf(_("Please select the resource of %s with which you would like to start a media session."), who); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3410 fields = purple_request_fields_new(); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3411 group = purple_request_field_group_new(NULL); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3412 request = g_new0(JabberMediaRequest, 1); |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3413 request->account = account; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3414 request->who = g_strdup(who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3415 request->type = type; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3416 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3417 purple_request_field_group_add_field(group, field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3418 purple_request_fields_add_group(fields, group); |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3419 purple_request_fields(account, _("Select a Resource"), msg, |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3420 NULL, fields, _("Initiate Media"), |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3421 G_CALLBACK(jabber_media_ok_cb), _("Cancel"), |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3422 G_CALLBACK(jabber_media_cancel_cb), |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3423 account, who, NULL, request); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3424 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3425 g_free(msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3426 return TRUE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3427 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3428 #endif |
26365
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26335
diff
changeset
|
3429 return FALSE; |
23787
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
3430 } |
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
3431 |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3432 PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who) |
23787
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
3433 { |
26334
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26279
diff
changeset
|
3434 #ifdef USE_VV |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3435 JabberStream *js = (JabberStream *) |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3436 purple_account_get_connection(account)->proto_data; |
23815
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23814
diff
changeset
|
3437 JabberBuddy *jb; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3438 JabberBuddyResource *jbr; |
29022
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29021
diff
changeset
|
3439 PurpleMediaCaps total = PURPLE_MEDIA_CAPS_NONE; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3440 gchar *resource; |
29021
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3441 GList *specific = NULL, *l; |
23815
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23814
diff
changeset
|
3442 |
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23814
diff
changeset
|
3443 if (!js) { |
26418
da651b0f40a1
Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26365
diff
changeset
|
3444 purple_debug_info("jabber", |
da651b0f40a1
Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26365
diff
changeset
|
3445 "jabber_can_do_media: NULL stream\n"); |
23815
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23814
diff
changeset
|
3446 return FALSE; |
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23814
diff
changeset
|
3447 } |
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23814
diff
changeset
|
3448 |
29021
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3449 jb = jabber_buddy_find(js, who, FALSE); |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3450 |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3451 if (!jb || !jb->resources) { |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3452 /* no resources online, we're trying to get caps for someone |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3453 * whose presence we're not subscribed to, or |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3454 * someone who is offline. */ |
29022
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29021
diff
changeset
|
3455 return total; |
29021
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3456 |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3457 } else if ((resource = jabber_get_resource(who)) != NULL) { |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3458 /* they've specified a resource, no need to ask or |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3459 * default or anything, just do it */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3460 jbr = jabber_buddy_find_resource(jb, resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3461 g_free(resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3462 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3463 if (!jbr) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3464 purple_debug_error("jabber", "jabber_get_media_caps:" |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3465 " Can't find resource %s\n", who); |
29022
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29021
diff
changeset
|
3466 return total; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3467 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3468 |
29021
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3469 l = specific = g_list_prepend(specific, jbr); |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3470 |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3471 } else { |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3472 /* we've got multiple resources, combine their caps */ |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3473 l = jb->resources; |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3474 } |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3475 |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3476 for (; l; l = l->next) { |
29022
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29021
diff
changeset
|
3477 PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE; |
29021
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3478 jbr = l->data; |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3479 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3480 if (jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3481 JINGLE_APP_RTP_SUPPORT_AUDIO)) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3482 caps |= PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION | |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3483 PURPLE_MEDIA_CAPS_AUDIO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3484 if (jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3485 JINGLE_APP_RTP_SUPPORT_VIDEO)) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3486 caps |= PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION | |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3487 PURPLE_MEDIA_CAPS_VIDEO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3488 if (caps & PURPLE_MEDIA_CAPS_AUDIO && caps & |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3489 PURPLE_MEDIA_CAPS_VIDEO) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3490 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3491 if (caps != PURPLE_MEDIA_CAPS_NONE) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3492 if (!jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3493 JINGLE_TRANSPORT_ICEUDP) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3494 !jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3495 JINGLE_TRANSPORT_RAWUDP)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3496 purple_debug_info("jingle-rtp", "Buddy doesn't " |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3497 "support the same transport types\n"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3498 caps = PURPLE_MEDIA_CAPS_NONE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3499 } else |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3500 caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION | |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3501 PURPLE_MEDIA_CAPS_CHANGE_DIRECTION; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3502 } |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3503 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE)) { |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3504 caps |= PURPLE_MEDIA_CAPS_AUDIO; |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3505 if (jabber_resource_has_capability(jbr, NS_GOOGLE_VIDEO)) |
26997
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26987
diff
changeset
|
3506 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26987
diff
changeset
|
3507 } |
29022
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29021
diff
changeset
|
3508 |
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29021
diff
changeset
|
3509 total |= caps; |
23814
d0ac3c438b71
Check remote JID's capabilities for audio and video XEP support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23812
diff
changeset
|
3510 } |
24970
99055b8db16b
Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24967
diff
changeset
|
3511 |
29021
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3512 if (specific) { |
7cab6dc6b79c
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
28943
diff
changeset
|
3513 g_list_free(specific); |
24970
99055b8db16b
Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24967
diff
changeset
|
3514 } |
26108
d6e23439b77c
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
3515 |
29022
9e735d7e2f1d
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29021
diff
changeset
|
3516 return total; |
26334
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26279
diff
changeset
|
3517 #else |
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26279
diff
changeset
|
3518 return PURPLE_MEDIA_CAPS_NONE; |
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26279
diff
changeset
|
3519 #endif |
23787
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
3520 } |
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
3521 |
28534
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3522 gboolean jabber_can_receive_file(PurpleConnection *gc, const char *who) |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3523 { |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3524 JabberStream *js = gc->proto_data; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3525 |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3526 if (js) { |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3527 JabberBuddy *jb = jabber_buddy_find(js, who, FALSE); |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3528 GList *iter; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3529 gboolean has_resources_without_caps = FALSE; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3530 |
28592
923681c5406e
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents:
28534
diff
changeset
|
3531 /* if we didn't find a JabberBuddy, we don't have presence for this |
923681c5406e
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents:
28534
diff
changeset
|
3532 buddy, let's assume they can receive files, disco should tell us |
923681c5406e
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents:
28534
diff
changeset
|
3533 when actually trying */ |
923681c5406e
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents:
28534
diff
changeset
|
3534 if (jb == NULL) |
923681c5406e
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents:
28534
diff
changeset
|
3535 return TRUE; |
923681c5406e
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <ml@update.uu.se>
parents:
28534
diff
changeset
|
3536 |
28534
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3537 /* find out if there is any resources without caps */ |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3538 for (iter = jb->resources; iter ; iter = g_list_next(iter)) { |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3539 JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3540 |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3541 if (!jabber_resource_know_capabilities(jbr)) { |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3542 has_resources_without_caps = TRUE; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3543 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3544 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3545 |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3546 if (has_resources_without_caps) { |
31086
a8cc50c2279f
Remove trailing whitespace
Richard Laager <rlaager@wiktel.com>
parents:
30929
diff
changeset
|
3547 /* there is at least one resource which we don't have caps for, |
28534
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3548 let's assume they can receive files... */ |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3549 return TRUE; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3550 } else { |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3551 /* we have caps for all the resources, see if at least one has |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3552 right caps */ |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3553 for (iter = jb->resources; iter ; iter = g_list_next(iter)) { |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3554 JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3555 |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30203
diff
changeset
|
3556 if (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER) |
28534
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3557 && (jabber_resource_has_capability(jbr, |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
3558 NS_BYTESTREAMS) |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3559 || jabber_resource_has_capability(jbr, NS_IBB))) { |
28534
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3560 return TRUE; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3561 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3562 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3563 return FALSE; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3564 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3565 } else { |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3566 return TRUE; |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3567 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3568 } |
738cd1adb3cf
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <ml@update.uu.se>
parents:
28517
diff
changeset
|
3569 |
29556
342ed5917f56
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents:
29549
diff
changeset
|
3570 static PurpleCmdRet |
29549
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3571 jabber_cmd_mood(PurpleConversation *conv, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3572 const char *cmd, char **args, char **error, void *data) |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3573 { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3574 JabberStream *js = conv->account->gc->proto_data; |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3575 |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3576 if (js->pep) { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3577 /* if no argument was given, unset mood */ |
30415
77ac5f4584bd
I'm pretty sure this is a logical operation, not bitwise.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
30322
diff
changeset
|
3578 if (!args || !args[0]) { |
29549
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3579 jabber_mood_set(js, NULL, NULL); |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3580 } else if (!args[1]) { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3581 jabber_mood_set(js, args[0], NULL); |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3582 } else { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3583 jabber_mood_set(js, args[0], args[1]); |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3584 } |
29556
342ed5917f56
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents:
29549
diff
changeset
|
3585 |
342ed5917f56
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents:
29549
diff
changeset
|
3586 return PURPLE_CMD_RET_OK; |
29549
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3587 } else { |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3588 /* account does not support PEP, can't set a mood */ |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3589 purple_conversation_write(conv, NULL, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3590 _("Account does not support PEP, can't set mood"), |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3591 PURPLE_MESSAGE_ERROR, time(NULL)); |
29556
342ed5917f56
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <paul@darkrain42.org>
parents:
29549
diff
changeset
|
3592 return PURPLE_CMD_RET_FAILED; |
29549
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3593 } |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3594 } |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3595 |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3596 static void jabber_register_commands(PurplePlugin *plugin) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3597 { |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3598 GSList *commands = NULL; |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3599 PurpleCmdId id; |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3600 id = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL, |
15822 | 3601 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3602 "prpl-jabber", jabber_cmd_chat_config, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3603 _("config: Configure a chat room."), NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3604 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3605 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3606 id = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL, |
15822 | 3607 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3608 "prpl-jabber", jabber_cmd_chat_config, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3609 _("configure: Configure a chat room."), NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3610 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3611 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3612 id = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL, |
15822 | 3613 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3614 "prpl-jabber", jabber_cmd_chat_nick, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3615 _("nick <new nickname>: Change your nickname."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3616 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3617 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3618 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3619 id = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL, |
15822 | 3620 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3621 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
28396
4a0d69b9d8a8
jabber: Correct the /part command's help.
Paul Aurich <paul@darkrain42.org>
parents:
28360
diff
changeset
|
3622 jabber_cmd_chat_part, _("part [message]: Leave the room."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3623 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3624 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3625 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3626 id = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL, |
15822 | 3627 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3628 "prpl-jabber", jabber_cmd_chat_register, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3629 _("register: Register with a chat room."), NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3630 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3631 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3632 /* XXX: there needs to be a core /topic cmd, methinks */ |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3633 id = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, |
15822 | 3634 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3635 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3636 jabber_cmd_chat_topic, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3637 _("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
|
3638 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3639 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3640 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3641 id = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3642 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3643 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3644 jabber_cmd_chat_ban, |
22619
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22459
diff
changeset
|
3645 _("ban <user> [reason]: Ban a user from the room."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3646 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3647 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3648 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3649 id = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3650 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3651 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3652 jabber_cmd_chat_affiliate, |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
3653 _("affiliate <owner|admin|member|outcast|none> [nick1] [nick2] ...: Get the users with an affiliation or set users' affiliation with the room."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3654 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3655 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3656 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3657 id = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3658 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3659 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3660 jabber_cmd_chat_role, |
27971
23dda7e57bcf
Fix two strings as pointed out on translators@
Paul Aurich <paul@darkrain42.org>
parents:
27969
diff
changeset
|
3661 _("role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the users with a role or set users' role with the room."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3662 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3663 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3664 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3665 id = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3666 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3667 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3668 jabber_cmd_chat_invite, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3669 _("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
|
3670 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3671 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3672 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3673 id = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3674 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3675 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3676 jabber_cmd_chat_join, |
31740
bcf0b8ba1a79
jabber: Fix /join behavior. Closes #14205.
Paul Aurich <paul@darkrain42.org>
parents:
31704
diff
changeset
|
3677 _("join: <room[@server]> [password]: Join a chat."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3678 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3679 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3680 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3681 id = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3682 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3683 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3684 jabber_cmd_chat_kick, |
22619
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22459
diff
changeset
|
3685 _("kick <user> [reason]: Kick a user from the room."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3686 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3687 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3688 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3689 id = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3690 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3691 "prpl-jabber", jabber_cmd_chat_msg, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3692 _("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
|
3693 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3694 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3695 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3696 id = purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL, |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
3697 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
3698 PURPLE_CMD_FLAG_PRPL_ONLY, |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
3699 "prpl-jabber", jabber_cmd_ping, |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
3700 _("ping <jid>: Ping a user/component/server."), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
3701 NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3702 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3703 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3704 id = purple_cmd_register("buzz", "w", PURPLE_CMD_P_PRPL, |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
3705 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY | |
25137
b3ab1c23cdf6
Register the /buzz command using PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS.
Marcus Lundblad <ml@update.uu.se>
parents:
25136
diff
changeset
|
3706 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3707 "prpl-jabber", jabber_cmd_buzz, |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3708 _("buzz: Buzz a user to get their attention"), NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3709 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
29549
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3710 |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3711 id = purple_cmd_register("mood", "ws", PURPLE_CMD_P_PRPL, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3712 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3713 PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3714 "prpl-jabber", jabber_cmd_mood, |
2f73b0a78f4f
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <ml@update.uu.se>
parents:
29503
diff
changeset
|
3715 _("mood: Set current user mood"), NULL); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3716 commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3717 |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3718 g_hash_table_insert(jabber_cmds, plugin, commands); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3719 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3720 |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3721 static void cmds_free_func(gpointer value) |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3722 { |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3723 GSList *commands = value; |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3724 while (commands) { |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3725 purple_cmd_unregister(GPOINTER_TO_UINT(commands->data)); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3726 commands = g_slist_delete_link(commands, commands); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3727 } |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3728 } |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3729 |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3730 static void jabber_unregister_commands(PurplePlugin *plugin) |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3731 { |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3732 g_hash_table_remove(jabber_cmds, plugin); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3733 } |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3734 |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3735 /* IPC functions */ |
25029
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25028
diff
changeset
|
3736 |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3737 /** |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3738 * IPC function for determining if a contact supports a certain feature. |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3739 * |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3740 * @param account The PurpleAccount |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3741 * @param jid The full JID of the contact. |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3742 * @param feature The feature's namespace. |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3743 * |
25029
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25028
diff
changeset
|
3744 * @return TRUE if supports feature; else FALSE. |
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25028
diff
changeset
|
3745 */ |
25028
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3746 static gboolean |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3747 jabber_ipc_contact_has_feature(PurpleAccount *account, const gchar *jid, |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3748 const gchar *feature) |
25028
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3749 { |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3750 PurpleConnection *gc = purple_account_get_connection(account); |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3751 JabberStream *js; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3752 JabberBuddy *jb; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3753 JabberBuddyResource *jbr; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3754 gchar *resource; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3755 |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3756 if (!purple_account_is_connected(account)) |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3757 return FALSE; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3758 js = gc->proto_data; |
25151
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3759 |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
3760 if (!(resource = jabber_get_resource(jid)) || |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3761 !(jb = jabber_buddy_find(js, jid, FALSE)) || |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3762 !(jbr = jabber_buddy_find_resource(jb, resource))) { |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3763 g_free(resource); |
25151
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3764 return FALSE; |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3765 } |
25151
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3766 |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3767 g_free(resource); |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3768 |
25175
b1b1b75a922e
Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents:
25167
diff
changeset
|
3769 return jabber_resource_has_capability(jbr, feature); |
25027
45816181b7de
* fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25017
diff
changeset
|
3770 } |
45816181b7de
* fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25017
diff
changeset
|
3771 |
25030
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25029
diff
changeset
|
3772 static void |
25151
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3773 jabber_ipc_add_feature(const gchar *feature) |
25030
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25029
diff
changeset
|
3774 { |
25151
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3775 if (!feature) |
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3776 return; |
25031 | 3777 jabber_add_feature(feature, 0); |
25151
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3778 |
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3779 /* send presence with new caps info for all connected accounts */ |
25032
7f6558c7a0a3
* implemented jabber_caps_broadcast_change() and finished jabber_ipc_add_feature() IPC function
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25031
diff
changeset
|
3780 jabber_caps_broadcast_change(); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3781 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3782 |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3783 static void |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3784 jabber_do_init(void) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3785 { |
26982
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3786 GHashTable *ui_info = purple_core_get_ui_info(); |
27055
2d258a809609
Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <paul@darkrain42.org>
parents:
27054
diff
changeset
|
3787 const gchar *ui_type; |
27517
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27516
diff
changeset
|
3788 const gchar *type = "pc"; /* default client type, if unknown or |
26982
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3789 unspecified */ |
27517
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27516
diff
changeset
|
3790 const gchar *ui_name = NULL; |
29559
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3791 #ifdef HAVE_CYRUS_SASL |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3792 /* We really really only want to do this once per process */ |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3793 static gboolean sasl_initialized = FALSE; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3794 #ifdef _WIN32 |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3795 UINT old_error_mode; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3796 gchar *sasldir; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3797 #endif |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3798 int ret; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3799 #endif |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3800 |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3801 /* XXX - If any other plugin wants SASL this won't be good ... */ |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3802 #ifdef HAVE_CYRUS_SASL |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3803 if (!sasl_initialized) { |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3804 sasl_initialized = TRUE; |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3805 #ifdef _WIN32 |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3806 sasldir = g_build_filename(wpurple_install_dir(), "sasl2", NULL); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3807 sasl_set_path(SASL_PATH_TYPE_PLUGIN, sasldir); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3808 g_free(sasldir); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3809 /* Suppress error popups for failing to load sasl plugins */ |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3810 old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3811 #endif |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3812 if ((ret = sasl_client_init(NULL)) != SASL_OK) { |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3813 purple_debug_error("xmpp", "Error (%d) initializing SASL.\n", ret); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3814 } |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3815 #ifdef _WIN32 |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3816 /* Restore the original error mode */ |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3817 SetErrorMode(old_error_mode); |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3818 #endif |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3819 } |
93d32ecf3186
jabber: Only initialize SASL once, too.
Paul Aurich <paul@darkrain42.org>
parents:
29558
diff
changeset
|
3820 #endif |
26982
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3821 |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3822 jabber_cmds = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, cmds_free_func); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3823 |
27055
2d258a809609
Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <paul@darkrain42.org>
parents:
27054
diff
changeset
|
3824 ui_type = ui_info ? g_hash_table_lookup(ui_info, "client_type") : NULL; |
26982
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3825 if (ui_type) { |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3826 if (strcmp(ui_type, "pc") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3827 strcmp(ui_type, "console") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3828 strcmp(ui_type, "phone") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3829 strcmp(ui_type, "handheld") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3830 strcmp(ui_type, "web") == 0 || |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3831 strcmp(ui_type, "bot") == 0) { |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3832 type = ui_type; |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3833 } |
007dff3cb9e4
Fixup after propagating new caps stuff
Marcus Lundblad <ml@update.uu.se>
parents:
26981
diff
changeset
|
3834 } |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3835 |
27517
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27516
diff
changeset
|
3836 if (ui_info) |
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27516
diff
changeset
|
3837 ui_name = g_hash_table_lookup(ui_info, "name"); |
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27516
diff
changeset
|
3838 if (ui_name == NULL) |
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27516
diff
changeset
|
3839 ui_name = PACKAGE; |
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27516
diff
changeset
|
3840 |
6b1eb8dbf86e
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <paul@darkrain42.org>
parents:
27516
diff
changeset
|
3841 jabber_add_identity("client", type, NULL, ui_name); |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3842 |
25028
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3843 /* initialize jabber_features list */ |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
3844 jabber_add_feature(NS_LAST_ACTIVITY, 0); |
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
3845 jabber_add_feature(NS_OOB_IQ_DATA, 0); |
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
3846 jabber_add_feature(NS_ENTITY_TIME, 0); |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3847 jabber_add_feature("jabber:iq:version", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3848 jabber_add_feature("jabber:x:conference", 0); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
3849 jabber_add_feature(NS_BYTESTREAMS, 0); |
25672
69495c6f12af
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents:
25671
diff
changeset
|
3850 jabber_add_feature("http://jabber.org/protocol/caps", 0); |
69495c6f12af
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents:
25671
diff
changeset
|
3851 jabber_add_feature("http://jabber.org/protocol/chatstates", 0); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
3852 jabber_add_feature(NS_DISCO_INFO, 0); |
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
3853 jabber_add_feature(NS_DISCO_ITEMS, 0); |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3854 jabber_add_feature(NS_IBB, 0); |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3855 jabber_add_feature("http://jabber.org/protocol/muc", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3856 jabber_add_feature("http://jabber.org/protocol/muc#user", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3857 jabber_add_feature("http://jabber.org/protocol/si", 0); |
30225
fa311a0e51c0
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <ml@update.uu.se>
parents:
30203
diff
changeset
|
3858 jabber_add_feature(NS_SI_FILE_TRANSFER, 0); |
28650
9ae3e70a327b
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <paul@darkrain42.org>
parents:
28648
diff
changeset
|
3859 jabber_add_feature(NS_XHTML_IM, 0); |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3860 jabber_add_feature(NS_PING, 0); |
26447
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26446
diff
changeset
|
3861 |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3862 /* Buzz/Attention */ |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3863 jabber_add_feature(NS_ATTENTION, jabber_buzz_isenabled); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3864 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3865 /* Bits Of Binary */ |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3866 jabber_add_feature(NS_BOB, 0); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3867 |
26447
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26446
diff
changeset
|
3868 /* Jingle features! */ |
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26446
diff
changeset
|
3869 jabber_add_feature(JINGLE, 0); |
26454
9131368ba4be
Advertise ICEUDP only when libnice is available
Paul Aurich <paul@darkrain42.org>
parents:
26453
diff
changeset
|
3870 |
26453
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3871 #ifdef USE_VV |
28646
9feec7d1d95c
jabber: Add the missing file and fix up the Google session namespaces
Paul Aurich <paul@darkrain42.org>
parents:
28645
diff
changeset
|
3872 jabber_add_feature(NS_GOOGLE_PROTOCOL_SESSION, jabber_audio_enabled); |
28645
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3873 jabber_add_feature(NS_GOOGLE_VOICE, jabber_audio_enabled); |
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3874 jabber_add_feature(NS_GOOGLE_VIDEO, jabber_video_enabled); |
7b4ade7c6d8a
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <paul@darkrain42.org>
parents:
28592
diff
changeset
|
3875 jabber_add_feature(NS_GOOGLE_CAMERA, jabber_video_enabled); |
28281
5f97830906bc
Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <will.thompson@collabora.co.uk>
parents:
28096
diff
changeset
|
3876 jabber_add_feature(JINGLE_APP_RTP, 0); |
26457
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26454
diff
changeset
|
3877 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_AUDIO, jabber_audio_enabled); |
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26454
diff
changeset
|
3878 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled); |
28281
5f97830906bc
Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <will.thompson@collabora.co.uk>
parents:
28096
diff
changeset
|
3879 jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0); |
26737
8b7d1aed6d59
merge of '8ddbfe5d6f5c2455497d11ccbfff769ed4e9fad4'
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
3880 jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0); |
29132
44e949b676f0
Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents:
28360
diff
changeset
|
3881 |
44e949b676f0
Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents:
28360
diff
changeset
|
3882 g_signal_connect(G_OBJECT(purple_media_manager_get()), "ui-caps-changed", |
44e949b676f0
Rebroadcast XMPP caps whenever the UI caps change.
maiku@pidgin.im
parents:
28360
diff
changeset
|
3883 G_CALLBACK(jabber_caps_broadcast_change), NULL); |
26453
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3884 #endif |
26447
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26446
diff
changeset
|
3885 |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3886 /* reverse order of unload_plugin */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3887 jabber_iq_init(); |
29560
13f320cde14f
jabber: Heavily refactor jabber_presence_parse(). It's still not short enough.
Paul Aurich <paul@darkrain42.org>
parents:
29559
diff
changeset
|
3888 jabber_presence_init(); |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3889 jabber_caps_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3890 /* PEP things should be init via jabber_pep_init, not here */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3891 jabber_pep_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3892 jabber_data_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3893 jabber_bosh_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3894 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3895 /* TODO: Implement adding and retrieving own features via IPC API */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3896 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3897 jabber_ibb_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3898 jabber_si_init(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3899 |
28696
8ada06fb65ed
jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents:
28517
diff
changeset
|
3900 jabber_auth_init(); |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3901 } |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3902 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3903 static void |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3904 jabber_do_uninit(void) |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3905 { |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3906 /* reverse order of jabber_do_init */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3907 jabber_bosh_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3908 jabber_data_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3909 jabber_si_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3910 jabber_ibb_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3911 /* PEP things should be uninit via jabber_pep_uninit, not here */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3912 jabber_pep_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3913 jabber_caps_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3914 jabber_presence_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3915 jabber_iq_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3916 |
29755 | 3917 #ifdef USE_VV |
3918 g_signal_handlers_disconnect_by_func(G_OBJECT(purple_media_manager_get()), | |
3919 G_CALLBACK(jabber_caps_broadcast_change), NULL); | |
3920 #endif | |
3921 | |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3922 jabber_auth_uninit(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3923 jabber_features_destroy(); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3924 jabber_identities_destroy(); |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3925 |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3926 g_hash_table_destroy(jabber_cmds); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3927 jabber_cmds = NULL; |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3928 } |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3929 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3930 void jabber_plugin_init(PurplePlugin *plugin) |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3931 { |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3932 ++plugin_ref; |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3933 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3934 if (plugin_ref == 1) |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3935 jabber_do_init(); |
28696
8ada06fb65ed
jabber: Factor the SASL auth methods into their own files.
Paul Aurich <paul@darkrain42.org>
parents:
28517
diff
changeset
|
3936 |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3937 jabber_register_commands(plugin); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
3938 |
25028
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3939 /* IPC functions */ |
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3940 purple_plugin_ipc_register(plugin, "contact_has_feature", PURPLE_CALLBACK(jabber_ipc_contact_has_feature), |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3941 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER, |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3942 purple_value_new(PURPLE_TYPE_BOOLEAN), 3, |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3943 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT), |
25028
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3944 purple_value_new(PURPLE_TYPE_STRING), |
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3945 purple_value_new(PURPLE_TYPE_STRING)); |
26870
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26803
diff
changeset
|
3946 |
25031 | 3947 purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature), |
3948 purple_marshal_VOID__POINTER, | |
3949 NULL, 1, | |
3950 purple_value_new(PURPLE_TYPE_STRING)); | |
27004
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3951 |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3952 purple_plugin_ipc_register(plugin, "register_namespace_watcher", |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3953 PURPLE_CALLBACK(jabber_iq_signal_register), |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3954 purple_marshal_VOID__POINTER_POINTER, |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3955 NULL, 2, |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3956 purple_value_new(PURPLE_TYPE_STRING), /* node */ |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3957 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3958 |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3959 purple_plugin_ipc_register(plugin, "unregister_namespace_watcher", |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3960 PURPLE_CALLBACK(jabber_iq_signal_unregister), |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3961 purple_marshal_VOID__POINTER_POINTER, |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3962 NULL, 2, |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3963 purple_value_new(PURPLE_TYPE_STRING), /* node */ |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3964 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3965 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3966 purple_signal_register(plugin, "jabber-register-namespace-watcher", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3967 purple_marshal_VOID__POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3968 NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3969 purple_value_new(PURPLE_TYPE_STRING), /* node */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3970 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3971 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3972 purple_signal_register(plugin, "jabber-unregister-namespace-watcher", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3973 purple_marshal_VOID__POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3974 NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3975 purple_value_new(PURPLE_TYPE_STRING), /* node */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3976 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3977 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3978 purple_signal_connect(plugin, "jabber-register-namespace-watcher", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3979 plugin, PURPLE_CALLBACK(jabber_iq_signal_register), NULL); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3980 purple_signal_connect(plugin, "jabber-unregister-namespace-watcher", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3981 plugin, PURPLE_CALLBACK(jabber_iq_signal_unregister), NULL); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3982 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3983 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3984 purple_signal_register(plugin, "jabber-receiving-xmlnode", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3985 purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3986 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3987 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3988 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3989 purple_signal_register(plugin, "jabber-sending-xmlnode", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3990 purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3991 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3992 purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3993 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3994 /* |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3995 * Do not remove this or the plugin will fail. Completely. You have been |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3996 * warned! |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3997 */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3998 purple_signal_connect_priority(plugin, "jabber-sending-xmlnode", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
3999 plugin, PURPLE_CALLBACK(jabber_send_signal_cb), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4000 NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4001 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4002 purple_signal_register(plugin, "jabber-sending-text", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4003 purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4004 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4005 purple_value_new_outgoing(PURPLE_TYPE_STRING)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4006 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4007 purple_signal_register(plugin, "jabber-receiving-message", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4008 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4009 purple_value_new(PURPLE_TYPE_BOOLEAN), 6, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4010 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4011 purple_value_new(PURPLE_TYPE_STRING), /* type */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4012 purple_value_new(PURPLE_TYPE_STRING), /* id */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4013 purple_value_new(PURPLE_TYPE_STRING), /* from */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4014 purple_value_new(PURPLE_TYPE_STRING), /* to */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4015 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4016 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4017 purple_signal_register(plugin, "jabber-receiving-iq", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4018 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4019 purple_value_new(PURPLE_TYPE_BOOLEAN), 5, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4020 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4021 purple_value_new(PURPLE_TYPE_STRING), /* type */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4022 purple_value_new(PURPLE_TYPE_STRING), /* id */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4023 purple_value_new(PURPLE_TYPE_STRING), /* from */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4024 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4025 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4026 purple_signal_register(plugin, "jabber-watched-iq", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4027 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4028 purple_value_new(PURPLE_TYPE_BOOLEAN), 5, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4029 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4030 purple_value_new(PURPLE_TYPE_STRING), /* type */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4031 purple_value_new(PURPLE_TYPE_STRING), /* id */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4032 purple_value_new(PURPLE_TYPE_STRING), /* from */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4033 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); /* child */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4034 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4035 purple_signal_register(plugin, "jabber-receiving-presence", |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4036 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4037 purple_value_new(PURPLE_TYPE_BOOLEAN), 4, |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4038 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4039 purple_value_new(PURPLE_TYPE_STRING), /* type */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4040 purple_value_new(PURPLE_TYPE_STRING), /* from */ |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4041 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
4042 } |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
4043 |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4044 void jabber_plugin_uninit(PurplePlugin *plugin) |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
4045 { |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4046 g_return_if_fail(plugin_ref > 0); |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4047 |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4048 purple_signals_unregister_by_instance(plugin); |
28517
96ba7fd24177
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <paul@darkrain42.org>
parents:
28515
diff
changeset
|
4049 purple_plugin_ipc_unregister_all(plugin); |
26870
92565c8e1e3a
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <paul@darkrain42.org>
parents:
26803
diff
changeset
|
4050 |
29558
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
4051 jabber_unregister_commands(plugin); |
d93676b59db1
jabber: And fix up the commands now to be per-plugin
Paul Aurich <paul@darkrain42.org>
parents:
29557
diff
changeset
|
4052 |
29557
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4053 --plugin_ref; |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4054 if (plugin_ref == 0) |
a694731e8b3f
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <paul@darkrain42.org>
parents:
29556
diff
changeset
|
4055 jabber_do_uninit(); |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
4056 } |