Mercurial > pidgin
annotate libpurple/protocols/jabber/jabber.c @ 27006:d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Allows plugins to send stanzas instead of stringifying+send_raw; allows
other plugins to see the sending stanzas. This may be a little hacky; I'm
on the fence.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Wed, 03 Jun 2009 06:45:25 +0000 |
parents | 60cb86295f08 |
children | 335d737c396e |
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 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
4 * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com> |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
5 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
6 * 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
|
7 * 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
|
8 * 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
|
9 * (at your option) any later version. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
10 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
11 * 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
|
12 * 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
|
13 * 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
|
14 * GNU General Public License for more details. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
15 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
16 * 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
|
17 * 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
|
18 * 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
|
19 * |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
20 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
21 #include "internal.h" |
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 "account.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
24 #include "accountopt.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
25 #include "blist.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
26 #include "cmds.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
27 #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
|
28 #include "conversation.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
29 #include "debug.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
30 #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
|
31 #include "imgstore.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
32 #include "message.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
33 #include "notify.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
34 #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
|
35 #include "privacy.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
36 #include "proxy.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
37 #include "prpl.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
38 #include "request.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
39 #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
|
40 #include "status.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
41 #include "util.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
42 #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
|
43 #include "xmlnode.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
44 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
45 #include "auth.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
46 #include "buddy.h" |
25985
c4fd9222dda1
propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
47 #include "caps.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
48 #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
|
49 #include "data.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
50 #include "disco.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
51 #include "google.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
52 #include "iq.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
53 #include "jutil.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
54 #include "message.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
55 #include "parser.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
56 #include "presence.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
57 #include "jabber.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
58 #include "roster.h" |
17835
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
59 #include "ping.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
60 #include "si.h" |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
61 #include "xdata.h" |
17834
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17833
diff
changeset
|
62 #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
|
63 #include "adhoccommands.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
64 |
24938
bd598b606ca4
Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23911
diff
changeset
|
65 #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
|
66 #include "jingle/rtp.h" |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 |
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
|
68 #define JABBER_CONNECT_STEPS (js->gsc ? 9 : 5) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
69 |
26933
f500336f9881
Fix building on Windows and better integrate the new signals with the pre-existing ones.
Etan Reisner <pidgin@unreliablesource.net>
parents:
26932
diff
changeset
|
70 PurplePlugin *jabber_plugin = NULL; |
21538 | 71 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
|
72 GList *jabber_identities = NULL; |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
73 GSList *jabber_cmds = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
74 |
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
|
75 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
|
76 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
|
77 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
78 static void jabber_stream_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
79 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
80 char *open_stream; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
81 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
82 open_stream = g_strdup_printf("<stream:stream to='%s' " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
83 "xmlns='jabber:client' " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
84 "xmlns:stream='http://etherx.jabber.org/streams' " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
85 "version='1.0'>", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
86 js->user->domain); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
87 /* setup the parser fresh for each stream */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
88 jabber_parser_setup(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
89 jabber_send_raw(js, open_stream, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 js->reinit = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 g_free(open_stream); |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
94 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
|
95 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
|
96 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
|
97 xmlnode *packet, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
98 { |
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
|
99 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
|
100 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
|
101 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
|
102 jabber_unregister_account_cb(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
103 } else { |
21358 | 104 purple_connection_error_reason (js->gc, |
105 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
106 ("Error initializing session")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
107 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
108 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
109 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
110 static void jabber_session_init(JabberStream *js) |
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 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
|
113 xmlnode *session; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
114 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
115 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
|
116 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
117 session = xmlnode_new_child(iq->node, "session"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
118 xmlnode_set_namespace(session, "urn:ietf:params:xml:ns:xmpp-session"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
119 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
120 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
122 |
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
|
123 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
|
124 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
|
125 xmlnode *packet, gpointer data) |
15373
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 xmlnode *bind; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
128 |
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
|
129 if (type == JABBER_IQ_RESULT && |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
130 (bind = xmlnode_get_child_with_namespace(packet, "bind", "urn:ietf:params:xml:ns:xmpp-bind"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 xmlnode *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
132 char *full_jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 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
|
134 JabberBuddy *my_jb = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
135 jabber_id_free(js->user); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
136 if(!(js->user = jabber_id_new(full_jid))) { |
21358 | 137 purple_connection_error_reason (js->gc, |
138 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
139 _("Invalid response from server.")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
140 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
141 if((my_jb = jabber_buddy_find(js, full_jid, TRUE))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
142 my_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
|
143 |
a61c017d3a99
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
24058
diff
changeset
|
144 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
|
145 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
146 g_free(full_jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
147 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
148 } else { |
21358 | 149 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
|
150 char *msg = jabber_parse_error(js, packet, &reason); |
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
151 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
|
152 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
153 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
154 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
155 jabber_session_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
156 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
157 |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
158 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
|
159 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
|
160 *dot = NULL; |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
161 |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
162 /* 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
|
163 if (input == NULL || *input == '\0') |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
164 return NULL; |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
165 |
24568
6b9552b09de0
Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
24563
diff
changeset
|
166 if (strstr(input, "__HOSTNAME__") == NULL) |
24585 | 167 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
|
168 |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
169 /* Replace __HOSTNAME__ with hostname */ |
24560
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
170 if (gethostname(hostname, sizeof(hostname) - 1)) { |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
171 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
|
172 /* 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
|
173 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
|
174 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
|
175 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
|
176 instead |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
177 */ |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
178 strcpy(hostname, "localhost"); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
179 } |
24560
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24556
diff
changeset
|
180 hostname[sizeof(hostname) - 1] = '\0'; |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
181 |
25463
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
182 /* 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
|
183 * 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
|
184 * 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
|
185 if((dot = strchr(hostname, '.'))) |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
186 dot = '\0'; |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25432
diff
changeset
|
187 |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
188 return purple_strreplace(input, "__HOSTNAME__", hostname); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
189 } |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
190 |
25049
f775f6021654
* using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25044
diff
changeset
|
191 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
|
192 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
193 if(xmlnode_get_child(packet, "starttls")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
194 if(jabber_process_starttls(js, packet)) |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
195 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
196 return; |
26272
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
197 } else if(purple_account_get_bool(js->gc->account, "require_tls", FALSE) && !jabber_stream_is_ssl(js)) { |
21358 | 198 purple_connection_error_reason (js->gc, |
199 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
200 _("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
|
201 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
202 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
203 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
204 if(js->registration) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
205 jabber_register_start(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
206 } else if(xmlnode_get_child(packet, "mechanisms")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
207 jabber_auth_start(js, packet); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
208 } else if(xmlnode_get_child(packet, "bind")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
209 xmlnode *bind, *resource; |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
210 char *requested_resource; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
211 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
|
212 bind = xmlnode_new_child(iq->node, "bind"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
213 xmlnode_set_namespace(bind, "urn:ietf:params:xml:ns:xmpp-bind"); |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
214 requested_resource = jabber_prep_resource(js->user->resource); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
215 |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
216 if (requested_resource != NULL) { |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
217 resource = xmlnode_new_child(bind, "resource"); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
218 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
|
219 g_free(requested_resource); |
24555
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24464
diff
changeset
|
220 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
221 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
222 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
|
223 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
224 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
225 } 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
|
226 /* 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
|
227 * 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
|
228 * 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
|
229 * connecting to an XMPP server. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
230 js->auth_type = JABBER_AUTH_IQ_AUTH; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
231 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
232 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
233 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
234 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
235 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
|
236 { |
21358 | 237 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
|
238 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
|
239 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
240 purple_connection_error_reason (js->gc, reason, msg); |
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
241 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
242 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
243 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
244 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
245 static void tls_init(JabberStream *js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
246 |
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
|
247 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
|
248 { |
15917 | 249 const char *xmlns; |
250 | |
26933
f500336f9881
Fix building on Windows and better integrate the new signals with the pre-existing ones.
Etan Reisner <pidgin@unreliablesource.net>
parents:
26932
diff
changeset
|
251 purple_signal_emit(jabber_plugin, "jabber-receiving-xmlnode", js->gc, packet); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
252 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
253 /* 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
|
254 if(NULL == *packet) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
255 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
256 |
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
|
257 xmlns = xmlnode_get_namespace(*packet); |
15917 | 258 |
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
|
259 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
|
260 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
|
261 } 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
|
262 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
|
263 } 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
|
264 jabber_message_parse(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
265 } else if(!strcmp((*packet)->name, "stream:features")) { |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
266 jabber_stream_features_parse(js, *packet); |
21538 | 267 } else if (!strcmp((*packet)->name, "features") && xmlns && |
15917 | 268 !strcmp(xmlns, "http://etherx.jabber.org/streams")) { |
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
|
269 jabber_stream_features_parse(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
270 } else if(!strcmp((*packet)->name, "stream:error") || |
21538 | 271 (!strcmp((*packet)->name, "error") && xmlns && |
15917 | 272 !strcmp(xmlns, "http://etherx.jabber.org/streams"))) |
273 { | |
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
|
274 jabber_stream_handle_error(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
275 } else if(!strcmp((*packet)->name, "challenge")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
276 if(js->state == JABBER_STREAM_AUTHENTICATING) |
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
|
277 jabber_auth_handle_challenge(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
278 } else if(!strcmp((*packet)->name, "success")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
279 if(js->state == JABBER_STREAM_AUTHENTICATING) |
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
|
280 jabber_auth_handle_success(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
281 } else if(!strcmp((*packet)->name, "failure")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
282 if(js->state == JABBER_STREAM_AUTHENTICATING) |
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
|
283 jabber_auth_handle_failure(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17893
diff
changeset
|
284 } else if(!strcmp((*packet)->name, "proceed")) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
285 if(js->state == JABBER_STREAM_AUTHENTICATING && !js->gsc) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
286 tls_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
287 } else { |
15822 | 288 purple_debug(PURPLE_DEBUG_WARNING, "jabber", "Unknown packet: %s\n", |
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
|
289 (*packet)->name); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
290 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
291 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
292 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
293 static 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
|
294 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
295 int ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
296 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
297 if (js->gsc) |
15822 | 298 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
|
299 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
300 ret = write(js->fd, data, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
301 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
302 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
303 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
304 |
15822 | 305 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
|
306 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
307 JabberStream *js = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
308 int ret, writelen; |
15822 | 309 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
|
310 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
311 if (writelen == 0) { |
15822 | 312 purple_input_remove(js->writeh); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
313 js->writeh = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
314 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
315 } |
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 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
|
318 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
319 if (ret < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
320 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
321 else if (ret <= 0) { |
21358 | 322 purple_connection_error_reason (js->gc, |
323 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
324 _("Write error")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
325 return; |
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 |
15822 | 328 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
|
329 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
330 |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
331 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
|
332 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
333 int ret; |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
334 gboolean success = TRUE; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
335 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
336 if (len == -1) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
337 len = strlen(data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
338 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
339 if (js->writeh == 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
340 ret = jabber_do_send(js, data, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
341 else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
342 ret = -1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
343 errno = EAGAIN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
344 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
345 |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
346 if (ret < 0 && errno != EAGAIN) { |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
347 purple_connection_error_reason (js->gc, |
21358 | 348 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
349 _("Write error")); |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
350 success = FALSE; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
351 } else if (ret < len) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
352 if (ret < 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
353 ret = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
354 if (js->writeh == 0) |
15822 | 355 js->writeh = purple_input_add( |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
356 js->gsc ? js->gsc->fd : js->fd, |
15822 | 357 PURPLE_INPUT_WRITE, jabber_send_cb, js); |
358 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
|
359 data + ret, len - ret); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
360 } |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
361 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
362 return success; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
363 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
364 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
365 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
|
366 { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
367 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
368 /* 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
|
369 if(strcmp(data, "\t")) { |
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
|
370 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
|
371 |
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
|
372 /* Because debug logs with plaintext passwords make me sad */ |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
373 if(js->state != JABBER_STREAM_CONNECTED && |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24869
diff
changeset
|
374 /* 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
|
375 (((tag_start = strstr(data, "<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
|
376 strstr(data, "xmlns='urn:ietf:params:xml:ns:xmpp-sasl'")) || |
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
|
377 ((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
|
378 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
|
379 (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
|
380 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
|
381 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
|
382 |
26777
93bf089e6233
Prevent a buggy XMPP-raw plugin from causing a NUL ptr deref - instead the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
26768
diff
changeset
|
383 /* Better to print out some wacky debugging than crash |
93bf089e6233
Prevent a buggy XMPP-raw plugin from causing a NUL ptr deref - instead the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
26768
diff
changeset
|
384 * due to a plugin sending bad xml */ |
93bf089e6233
Prevent a buggy XMPP-raw plugin from causing a NUL ptr deref - instead the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
26768
diff
changeset
|
385 if (tag_end == NULL) |
93bf089e6233
Prevent a buggy XMPP-raw plugin from causing a NUL ptr deref - instead the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
26768
diff
changeset
|
386 tag_end = tag_start; |
93bf089e6233
Prevent a buggy XMPP-raw plugin from causing a NUL ptr deref - instead the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
26768
diff
changeset
|
387 |
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
|
388 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
|
389 |
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
|
390 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
|
391 *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
|
392 } |
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
|
393 |
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
|
394 purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s%s%s\n", |
26450
e344e2815454
Specify SSL properly in debug messages for BOSH sending debug output
Paul Aurich <paul@darkrain42.org>
parents:
26448
diff
changeset
|
395 jabber_stream_is_ssl(js) ? " (ssl)" : "", 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
|
396 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
|
397 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
|
398 |
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
|
399 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
|
400 } |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
401 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
402 /* 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
|
403 * 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
|
404 |
26933
f500336f9881
Fix building on Windows and better integrate the new signals with the pre-existing ones.
Etan Reisner <pidgin@unreliablesource.net>
parents:
26932
diff
changeset
|
405 purple_signal_emit(jabber_plugin, "jabber-sending-text", js->gc, &data); |
23376
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
406 if (data == NULL) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
407 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
408 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
409 #ifdef HAVE_CYRUS_SASL |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
410 if (js->sasl_maxbuf>0) { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
411 int pos = 0; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
412 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
413 if (!js->gsc && js->fd<0) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
414 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
415 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
416 if (len == -1) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
417 len = strlen(data); |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
418 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
419 while (pos < len) { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
420 int towrite; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
421 const char *out; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
422 unsigned olen; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
423 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
424 towrite = MIN((len - pos), js->sasl_maxbuf); |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
425 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
426 sasl_encode(js->sasl, &data[pos], towrite, &out, &olen); |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
427 pos += towrite; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
428 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
429 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
|
430 break; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
431 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
432 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
433 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
434 #endif |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23285
diff
changeset
|
435 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
436 if (len == -1) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
437 len = strlen(data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
438 |
25182
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
439 if (js->use_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
|
440 jabber_bosh_connection_send_raw(js->bosh, data); |
25182
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
441 else |
25125
907ca9a36fe0
explicit merge of '714a7c7f903d11c96ffade34966121da549d998f'
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
442 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
|
443 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
444 |
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
|
445 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
|
446 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
447 JabberStream *js = (JabberStream*)gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
448 jabber_send_raw(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
449 return len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
450 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
451 |
27006
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
452 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
|
453 gpointer unused) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
454 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
455 char *txt; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
456 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
457 |
27006
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
458 if (NULL == packet) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
459 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
460 |
27006
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
461 txt = xmlnode_to_str(*packet, &len); |
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
462 jabber_send_raw(purple_connection_get_protocol_data(pc), txt, len); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
463 g_free(txt); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
464 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
465 |
27006
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
466 void jabber_send(JabberStream *js, xmlnode *packet) |
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
467 { |
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
468 purple_signal_emit(jabber_plugin, "jabber-sending-xmlnode", js->gc, &packet); |
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
469 } |
d31af94a715d
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <paul@darkrain42.org>
parents:
27004
diff
changeset
|
470 |
25640
42dd7e591031
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents:
25412
diff
changeset
|
471 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
|
472 { |
21973
966f98d4b04b
Masca noticed that dc6923294f5f33ff7a52a998e1b9e9ad47be0211 made jabber.c not
Will Thompson <will.thompson@collabora.co.uk>
parents:
21964
diff
changeset
|
473 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
|
474 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
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
|
475 _("Ping timeout")); |
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
|
476 js->keepalive_timeout = -1; |
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
|
477 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
|
478 } |
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
|
479 |
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
|
480 void jabber_keepalive(PurpleConnection *gc) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
481 { |
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
|
482 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
|
483 |
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
|
484 if (js->keepalive_timeout == -1) { |
26917
6b0e150f2276
Stop trying to be clever with XMPP keepalive pings.
Paul Aurich <paul@darkrain42.org>
parents:
26874
diff
changeset
|
485 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
|
486 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
|
487 (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
|
488 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
489 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
490 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
491 static void |
15822 | 492 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc, |
493 PurpleInputCondition cond) | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
494 { |
15822 | 495 PurpleConnection *gc = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
496 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
497 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
498 static char buf[4096]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
499 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
500 /* TODO: It should be possible to make this check unnecessary */ |
15822 | 501 if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
502 purple_ssl_close(gsc); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
503 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
504 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
505 |
15822 | 506 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
|
507 gc->last_received = time(NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
508 buf[len] = '\0'; |
15822 | 509 purple_debug(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
|
510 jabber_parser_process(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
511 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
512 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
513 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
514 |
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
|
515 if(len < 0 && errno == EAGAIN) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
516 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
|
517 else { |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
518 if (len == 0) |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
519 purple_debug_info("jabber", "Server closed the connection.\n"); |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
520 else |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
521 purple_debug_info("jabber", "Disconnected: %s\n", g_strerror(errno)); |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
522 purple_connection_error_reason (js->gc, |
21358 | 523 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
524 _("Read Error")); |
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
|
525 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
526 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
527 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
528 static void |
15822 | 529 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
|
530 { |
15822 | 531 PurpleConnection *gc = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
532 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
533 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
534 static char buf[4096]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
535 |
15822 | 536 if(!PURPLE_CONNECTION_IS_VALID(gc)) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
537 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
538 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
539 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
|
540 gc->last_received = time(NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
541 #ifdef HAVE_CYRUS_SASL |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
542 if (js->sasl_maxbuf>0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
543 const char *out; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
544 unsigned int olen; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
545 sasl_decode(js->sasl, buf, len, &out, &olen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
546 if (olen>0) { |
15822 | 547 purple_debug(PURPLE_DEBUG_INFO, "jabber", "RecvSASL (%u): %s\n", olen, out); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
548 jabber_parser_process(js,out,olen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
549 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
550 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
551 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
552 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
553 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
554 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
555 buf[len] = '\0'; |
15822 | 556 purple_debug(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
|
557 jabber_parser_process(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
558 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
559 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
|
560 } else if(len < 0 && errno == EAGAIN) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
561 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
562 } else { |
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
|
563 if (len == 0) |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
564 purple_debug_info("jabber", "Server closed the connection.\n"); |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
565 else |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23389
diff
changeset
|
566 purple_debug_info("jabber", "Disconnected: %s\n", g_strerror(errno)); |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
567 purple_connection_error_reason (js->gc, |
21358 | 568 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
569 _("Read Error")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
570 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
571 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
572 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
573 static void |
15822 | 574 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc, |
575 PurpleInputCondition cond) | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
576 { |
15822 | 577 PurpleConnection *gc = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
578 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
579 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
580 /* TODO: It should be possible to make this check unnecessary */ |
15822 | 581 if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
582 purple_ssl_close(gsc); | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
583 return; |
19999
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19723
diff
changeset
|
584 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
585 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
586 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
587 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
588 if(js->state == JABBER_STREAM_CONNECTING) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
589 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
|
590 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
15822 | 591 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
|
592 |
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
|
593 /* 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
|
594 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
|
595 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
596 |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
597 static void |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
598 txt_resolved_cb(GSList *responses, gpointer data) |
25038
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25035
diff
changeset
|
599 { |
25181
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25180
diff
changeset
|
600 JabberStream *js = data; |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
601 |
25180
1516525c86fa
Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents:
25179
diff
changeset
|
602 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
|
603 |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
604 if (responses == NULL) { |
25038
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25035
diff
changeset
|
605 gchar *tmp; |
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25035
diff
changeset
|
606 tmp = g_strdup_printf(_("Could not find alternative XMPP connection methods after failing to connect directly.\n")); |
25181
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25180
diff
changeset
|
607 purple_connection_error_reason (js->gc, |
25038
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25035
diff
changeset
|
608 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
25042
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25039
diff
changeset
|
609 g_free(tmp); |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
610 return; |
25038
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25035
diff
changeset
|
611 } |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
612 |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
613 while (responses) { |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
614 PurpleTxtResponse *resp = responses->data; |
25039
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
615 gchar **token; |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
616 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
|
617 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
|
618 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
|
619 js->bosh = jabber_bosh_connection_init(js, token[1]); |
25182
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
620 js->use_bosh = TRUE; |
25039
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
621 g_strfreev(token); |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
622 break; |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
623 } |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25038
diff
changeset
|
624 g_strfreev(token); |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
625 purple_txt_response_destroy(resp); |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
626 responses = g_slist_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
|
627 } |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
628 |
25181
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25180
diff
changeset
|
629 if (js->bosh) { |
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25180
diff
changeset
|
630 jabber_bosh_connection_connect(js->bosh); |
25042
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25039
diff
changeset
|
631 } else { |
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25039
diff
changeset
|
632 purple_debug_info("jabber","Didn't find an alternative connection method.\n"); |
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25039
diff
changeset
|
633 } |
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
|
634 |
26590
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
635 if (responses) { |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
636 g_slist_foreach(responses, (GFunc)purple_txt_response_destroy, NULL); |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
637 g_slist_free(responses); |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26589
diff
changeset
|
638 } |
25038
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25035
diff
changeset
|
639 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
640 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
641 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
642 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
|
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
647 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
|
648 if (js->srv_rec != NULL) { |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
649 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record.\n", error); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
650 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
|
651 } else { |
25124
ba362a67278c
propagate from branch 'im.pidgin.pidgin' (head 2747d5e0324ca6b81e83bbb8b75e1efebcbbad6e)
Tobias Markmann <tfar@soc.pidgin.im>
diff
changeset
|
652 purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain); |
25181
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25180
diff
changeset
|
653 js->srv_query_data = purple_txt_resolve("_xmppconnect", 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
|
654 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
655 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
656 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
657 |
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
|
658 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
|
659 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
|
660 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
661 js->fd = source; |
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 if(js->state == JABBER_STREAM_CONNECTING) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
664 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
|
665 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
666 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
15822 | 667 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
|
668 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
669 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
670 static void |
15822 | 671 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
|
672 gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
673 { |
15822 | 674 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
|
675 JabberStream *js; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
676 |
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
|
677 /* If the connection is already disconnected, we don't need to do anything else */ |
15822 | 678 if(!PURPLE_CONNECTION_IS_VALID(gc)) |
15606
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15497
diff
changeset
|
679 return; |
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15497
diff
changeset
|
680 |
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
|
681 js = gc->proto_data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
682 js->gsc = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
683 |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
684 purple_connection_ssl_error (gc, error); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
685 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
686 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
687 static void tls_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
688 { |
15822 | 689 purple_input_remove(js->gc->inpa); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
690 js->gc->inpa = 0; |
18929
67cb28c0ec89
applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18163
diff
changeset
|
691 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
|
692 jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
693 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
694 |
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
|
695 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
|
696 gboolean fatal_failure) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
697 { |
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
|
698 /* 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
|
699 * 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
|
700 * 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
|
701 * 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
|
702 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
|
703 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
|
704 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
|
705 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
|
706 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
|
707 |
16996 | 708 if (purple_proxy_connect(js->gc, js->gc->account, host, |
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
|
709 port, jabber_login_callback, js->gc) == 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
|
710 if (fatal_failure) { |
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
|
711 purple_connection_error_reason (js->gc, |
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
|
712 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
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
|
713 _("Unable to create socket")); |
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
|
714 } |
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
|
715 |
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
|
716 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
|
717 } |
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
|
718 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
719 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
|
720 } |
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
|
721 |
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
|
722 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
|
723 { |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
724 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
|
725 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
|
726 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
|
727 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
|
728 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
729 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23396
diff
changeset
|
730 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
|
731 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
|
732 |
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
|
733 /* 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
|
734 jabber_login_connect(js, js->user->domain, js->user->domain, |
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
|
735 purple_account_get_int(js->gc->account, "port", 5222), TRUE); |
15373
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 |
15822 | 738 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
|
739 { |
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
|
740 JabberStream *js = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
741 js->srv_query_data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
742 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
743 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
|
744 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
|
745 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
|
746 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
|
747 try_srv_connect(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
748 } else { |
16996 | 749 jabber_login_connect(js, js->user->domain, js->user->domain, |
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
|
750 purple_account_get_int(js->gc->account, "port", 5222), TRUE); |
15373
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 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
753 |
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
|
754 void |
15822 | 755 jabber_login(PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
756 { |
15822 | 757 PurpleConnection *gc = purple_account_get_connection(account); |
758 const char *connect_server = purple_account_get_string(account, | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
759 "connect_server", ""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
760 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
|
761 PurplePresence *presence; |
25353
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24890
diff
changeset
|
762 PurpleStoredImage *image; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
763 JabberBuddy *my_jb = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
764 |
23777
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23180
diff
changeset
|
765 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
|
766 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
767 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
|
768 js->gc = gc; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
769 js->fd = -1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
770 js->iq_callbacks = 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
|
771 g_free, g_free); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
772 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
|
773 g_free, (GDestroyNotify)jabber_buddy_free); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
774 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
|
775 g_free, (GDestroyNotify)jabber_chat_free); |
15822 | 776 js->user = jabber_id_new(purple_account_get_username(account)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
777 js->next_id = g_random_int(); |
15822 | 778 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
|
779 js->old_length = 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
|
780 js->keepalive_timeout = -1; |
25993
6d7d360687bd
Jabber: Default protocol version to 1.0.
Paul Aurich <paul@darkrain42.org>
parents:
25987
diff
changeset
|
781 /* Set the default protocol version to 1.0. Overridden in parser.c. */ |
6d7d360687bd
Jabber: Default protocol version to 1.0.
Paul Aurich <paul@darkrain42.org>
parents:
25987
diff
changeset
|
782 js->protocol_version = JABBER_PROTO_1_0; |
23798
16543025aed1
Moved jingle.c global variable "sessions" into JabberStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23797
diff
changeset
|
783 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
|
784 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
|
785 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
|
786 js->stun_query = NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
787 |
25685
a92df60855f3
Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents:
25255
diff
changeset
|
788 /* 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
|
789 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
|
790 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
|
791 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
|
792 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
|
793 js->idle = purple_presence_get_idle_time(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
|
794 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
795 if(!js->user) { |
21358 | 796 purple_connection_error_reason (gc, |
797 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
798 _("Invalid XMPP ID")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
799 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
800 } |
26080
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
801 |
16952
919515748253
Handle people forgetting to enter a domain. Also, change 'server,' in the account options to 'domain,' which is its proper name, and hopefully less confusion
Sean Egan <seanegan@gmail.com>
parents:
16951
diff
changeset
|
802 if (!js->user->domain || *(js->user->domain) == '\0') { |
21358 | 803 purple_connection_error_reason (gc, |
804 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
805 _("Invalid XMPP ID. Domain must be set.")); |
16952
919515748253
Handle people forgetting to enter a domain. Also, change 'server,' in the account options to 'domain,' which is its proper name, and hopefully less confusion
Sean Egan <seanegan@gmail.com>
parents:
16951
diff
changeset
|
806 return; |
919515748253
Handle people forgetting to enter a domain. Also, change 'server,' in the account options to 'domain,' which is its proper name, and hopefully less confusion
Sean Egan <seanegan@gmail.com>
parents:
16951
diff
changeset
|
807 } |
26080
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
808 |
25426
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25423
diff
changeset
|
809 /* |
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25423
diff
changeset
|
810 * Calculate the avatar hash for our current image so we know (when we |
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25423
diff
changeset
|
811 * fetch our vCard and PEP avatar) if we should send our avatar to the |
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25423
diff
changeset
|
812 * server. |
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25423
diff
changeset
|
813 */ |
25353
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24890
diff
changeset
|
814 if ((image = purple_buddy_icons_find_account_icon(account))) { |
25426
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25423
diff
changeset
|
815 js->initial_avatar_hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(image), |
25353
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24890
diff
changeset
|
816 purple_imgstore_get_size(image)); |
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24890
diff
changeset
|
817 purple_imgstore_unref(image); |
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24890
diff
changeset
|
818 } |
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24890
diff
changeset
|
819 |
15822 | 820 if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE))) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
821 my_jb->subscription |= JABBER_SUB_BOTH; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
822 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
823 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
|
824 |
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
|
825 /* TODO: Just use purple_url_parse? */ |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
826 if (!g_ascii_strncasecmp(connect_server, "http://", 7) || !g_ascii_strncasecmp(connect_server, "https://", 8)) { |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
827 js->use_bosh = TRUE; |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
828 js->bosh = jabber_bosh_connection_init(js, connect_server); |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
829 if (!js->bosh) { |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
830 purple_connection_error_reason (js->gc, |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
831 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
832 _("Malformed BOSH Connect Server")); |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
833 return; |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
834 } |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
835 jabber_bosh_connection_connect(js->bosh); |
25179
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25177
diff
changeset
|
836 return; |
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
|
837 } else { |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25676
diff
changeset
|
838 js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain); |
25179
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25177
diff
changeset
|
839 } |
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25177
diff
changeset
|
840 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
841 /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */ |
15822 | 842 if(purple_account_get_bool(js->gc->account, "old_ssl", FALSE)) { |
843 if(purple_ssl_is_supported()) { | |
844 js->gsc = purple_ssl_connect(js->gc->account, | |
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
|
845 js->certificate_CN, |
15822 | 846 purple_account_get_int(account, "port", 5223), jabber_login_callback_ssl, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
847 jabber_ssl_connect_failure, js->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
|
848 if (!js->gsc) { |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
849 purple_connection_error_reason (js->gc, |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
850 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
|
851 _("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
|
852 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
853 } else { |
21358 | 854 purple_connection_error_reason (js->gc, |
855 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
856 _("SSL support unavailable")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
857 } |
25678
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
858 |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
859 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
860 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
861 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
862 /* 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
|
863 * 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
|
864 if(connect_server[0]) { |
25678
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
865 jabber_login_connect(js, js->user->domain, connect_server, purple_account_get_int(account, "port", 5222), TRUE); |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
866 } else { |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
867 js->srv_query_data = purple_srv_resolve("xmpp-client", |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25677
diff
changeset
|
868 "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
|
869 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
870 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
871 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
872 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
873 static gboolean |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
874 conn_close_cb(gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
875 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
876 JabberStream *js = data; |
15822 | 877 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
|
878 |
17876
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17872
diff
changeset
|
879 jabber_parser_free(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
880 |
15822 | 881 purple_account_disconnect(account); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
882 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
883 return FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
884 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
885 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
886 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
887 jabber_connection_schedule_close(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
888 { |
15822 | 889 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
|
890 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
891 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
892 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
|
893 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
|
894 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
|
895 xmlnode *packet, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
896 { |
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
|
897 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
|
898 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
|
899 char *to = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
900 |
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
|
901 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
|
902 if(js->registration) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
903 buf = g_strdup_printf(_("Registration of %s@%s successful"), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
904 js->user->node, js->user->domain); |
17881
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
905 if(account->registration_cb) |
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
906 (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
|
907 } 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
|
908 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
|
909 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
|
910 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
|
911 } |
15822 | 912 purple_notify_info(NULL, _("Registration Successful"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
913 _("Registration Successful"), buf); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
914 g_free(buf); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
915 } 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
|
916 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
|
917 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
918 if(!msg) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
919 msg = g_strdup(_("Unknown Error")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
920 |
15822 | 921 purple_notify_error(NULL, _("Registration Failed"), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
922 _("Registration Failed"), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
923 g_free(msg); |
17881
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
924 if(account->registration_cb) |
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
925 (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
|
926 } |
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
|
927 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
|
928 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
|
929 jabber_connection_schedule_close(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
930 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
931 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
932 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
|
933 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
|
934 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
|
935 xmlnode *packet, gpointer data) |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
936 { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
937 char *buf; |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
938 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
|
939 |
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
|
940 /* 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
|
941 * 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
|
942 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
|
943 |
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
|
944 if (type == JABBER_IQ_RESULT) { |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
945 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
|
946 to); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
947 purple_notify_info(NULL, _("Unregistration Successful"), |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
948 _("Unregistration Successful"), buf); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
949 g_free(buf); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
950 } 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
|
951 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
|
952 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
953 if(!msg) |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
954 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
|
955 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
956 purple_notify_error(NULL, _("Unregistration Failed"), |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
957 _("Unregistration Failed"), msg); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
958 g_free(msg); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
959 } |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
960 g_free(to); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
961 } |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
962 |
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
|
963 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
|
964 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
|
965 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
|
966 } 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
|
967 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
968 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
|
969 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
|
970 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
971 GList *groups, *flds; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
972 xmlnode *query, *y; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
973 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
974 char *username; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
975 |
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
|
976 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
|
977 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
|
978 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
|
979 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
|
980 |
15822 | 981 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
|
982 groups = groups->next) { |
15822 | 983 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
|
984 flds; flds = flds->next) { |
15822 | 985 PurpleRequestField *field = flds->data; |
986 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
|
987 if(!strcmp(id,"unregister")) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
988 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
|
989 if(value) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
990 /* 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
|
991 (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
|
992 jabber_iq_free(iq); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
993 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
|
994 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
|
995 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
|
996 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
|
997 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
|
998 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
999 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
|
1000 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1001 jabber_iq_send(iq); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1002 g_free(cbdata); |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1003 return; |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1004 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1005 } else { |
15822 | 1006 const char *value = purple_request_field_string_get_value(field); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1007 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1008 if(!strcmp(id, "username")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1009 y = xmlnode_new_child(query, "username"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1010 } else if(!strcmp(id, "password")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1011 y = xmlnode_new_child(query, "password"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1012 } else if(!strcmp(id, "name")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1013 y = xmlnode_new_child(query, "name"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1014 } else if(!strcmp(id, "email")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1015 y = xmlnode_new_child(query, "email"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1016 } else if(!strcmp(id, "nick")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1017 y = xmlnode_new_child(query, "nick"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1018 } else if(!strcmp(id, "first")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1019 y = xmlnode_new_child(query, "first"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1020 } else if(!strcmp(id, "last")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1021 y = xmlnode_new_child(query, "last"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1022 } else if(!strcmp(id, "address")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1023 y = xmlnode_new_child(query, "address"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1024 } else if(!strcmp(id, "city")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1025 y = xmlnode_new_child(query, "city"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1026 } else if(!strcmp(id, "state")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1027 y = xmlnode_new_child(query, "state"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1028 } else if(!strcmp(id, "zip")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1029 y = xmlnode_new_child(query, "zip"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1030 } else if(!strcmp(id, "phone")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1031 y = xmlnode_new_child(query, "phone"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1032 } else if(!strcmp(id, "url")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1033 y = xmlnode_new_child(query, "url"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1034 } else if(!strcmp(id, "date")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1035 y = xmlnode_new_child(query, "date"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1036 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1037 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1038 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1039 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
|
1040 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
|
1041 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
|
1042 cbdata->js->user->node = g_strdup(value); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1043 } |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1044 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
|
1045 purple_account_set_password(cbdata->js->gc->account, value); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1046 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1047 } |
19697
481749fc0b6b
merge of '1c7910841138381c841363256ca3c7905b1f26b0'
Daniel Atallah <daniel.atallah@gmail.com>
diff
changeset
|
1048 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1049 |
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
|
1050 if(cbdata->js->registration) { |
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
|
1051 username = g_strdup_printf("%s@%s/%s", cbdata->js->user->node, cbdata->js->user->domain, |
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
|
1052 cbdata->js->user->resource); |
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
|
1053 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
|
1054 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
|
1055 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1056 |
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
|
1057 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
|
1058 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1059 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
|
1060 g_free(cbdata); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1061 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1062 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1063 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
|
1064 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
|
1065 { |
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
|
1066 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
|
1067 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
|
1068 if(account->registration_cb) |
17881
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
1069 (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
|
1070 jabber_connection_schedule_close(cbdata->js); |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1071 } |
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
|
1072 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
|
1073 g_free(cbdata); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1074 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1075 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1076 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
|
1077 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1078 xmlnode *query; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1079 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
|
1080 char *to = data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1081 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1082 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
|
1083 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
|
1084 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
|
1085 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
|
1086 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1087 xmlnode_insert_child(query, result); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1088 |
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
|
1089 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
|
1090 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1091 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1092 |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1093 static const struct { |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1094 const char *name; |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1095 const char *label; |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1096 } registration_fields[] = { |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1097 { "email", N_("Email") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1098 { "nick", N_("Nickname") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1099 { "first", N_("First name") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1100 { "last", N_("Last name") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1101 { "address", N_("Address") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1102 { "city", N_("City") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1103 { "state", N_("State") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1104 { "zip", N_("Postal code") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1105 { "phone", N_("Phone") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1106 { "url", N_("URL") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1107 { "date", N_("Date") }, |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1108 { NULL, NULL } |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1109 }; |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1110 |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25645
diff
changeset
|
1111 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
|
1112 const char *id, xmlnode *query) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1113 { |
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
|
1114 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
|
1115 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
|
1116 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
|
1117 PurpleRequestField *field; |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1118 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
|
1119 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
|
1120 JabberRegisterCBData *cbdata; |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1121 gboolean registered = FALSE; |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1122 int i; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1123 |
25648
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25645
diff
changeset
|
1124 if (type != JABBER_IQ_RESULT) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1125 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1126 |
21592
68b036c452f3
The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evan.s@dreskin.net>
parents:
21591
diff
changeset
|
1127 if (!from) |
68b036c452f3
The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evan.s@dreskin.net>
parents:
21591
diff
changeset
|
1128 from = js->serverFQDN; |
68b036c452f3
The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evan.s@dreskin.net>
parents:
21591
diff
changeset
|
1129 g_return_if_fail(from != NULL); |
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
|
1130 |
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
|
1131 if(js->registration) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1132 /* get rid of the login thingy */ |
15822 | 1133 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
|
1134 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1135 |
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
|
1136 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
|
1137 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
|
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 if(js->registration) { |
15822 | 1140 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
|
1141 _("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
|
1142 if(account->registration_cb) |
17881
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17880
diff
changeset
|
1143 (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
|
1144 jabber_connection_schedule_close(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1145 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1146 } |
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
|
1147 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1148 |
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
|
1149 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
|
1150 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
|
1151 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
|
1152 |
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
|
1153 } else if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:oob"))) { |
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
|
1154 xmlnode *url; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1155 |
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
|
1156 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
|
1157 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
|
1158 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
|
1159 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
|
1160 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
|
1161 |
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
|
1162 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
|
1163 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
|
1164 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
|
1165 (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
|
1166 jabber_connection_schedule_close(js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1167 } |
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
|
1168 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1169 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1170 } |
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
|
1171 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1172 |
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
|
1173 /* 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
|
1174 |
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
|
1175 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
|
1176 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
|
1177 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
|
1178 |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1179 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
|
1180 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
|
1181 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
|
1182 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
|
1183 else |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1184 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
|
1185 |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1186 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
|
1187 g_free(data); |
26247
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1188 } |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1189 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
|
1190 if(js->registration) |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1191 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
|
1192 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
|
1193 else { |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1194 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
|
1195 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
|
1196 g_free(data); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1197 } |
26247
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1198 |
f5e613e05332
Applied disco-2.patch from nops with some modifications:
Paul Aurich <paul@darkrain42.org>
parents:
25981
diff
changeset
|
1199 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
|
1200 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
|
1201 } |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1202 |
26615
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1203 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
|
1204 if(js->registration) |
15822 | 1205 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
|
1206 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
|
1207 else { |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1208 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
|
1209 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
|
1210 g_free(data); |
5149ecc8f456
Use defaults provided by the server where applicable and when available
Paul Aurich <paul@darkrain42.org>
parents:
26612
diff
changeset
|
1211 } |
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
|
1212 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
|
1213 } |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1214 |
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1215 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
|
1216 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
|
1217 char *data = xmlnode_get_data(node); |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1218 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
|
1219 _(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
|
1220 data, FALSE); |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1221 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
|
1222 g_free(data); |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1223 } |
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
|
1224 } |
26612
28381a8889a8
This is a little less...repetitious
Paul Aurich <paul@darkrain42.org>
parents:
26610
diff
changeset
|
1225 |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1226 if(registered) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1227 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
|
1228 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
|
1229 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1230 |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1231 if((y = xmlnode_get_child(query, "instructions"))) |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1232 instructions = xmlnode_get_data(y); |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1233 else if(registered) |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1234 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
|
1235 "to change your account registration.")); |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1236 else |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1237 instructions = g_strdup(_("Please fill out the information below " |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1238 "to register your new account.")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1239 |
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
|
1240 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
|
1241 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
|
1242 cbdata->who = g_strdup(from); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1243 |
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
|
1244 if(js->registration) |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1245 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
|
1246 _("Register New XMPP Account"), instructions, fields, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1247 _("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
|
1248 _("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
|
1249 purple_connection_get_account(js->gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1250 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
|
1251 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
|
1252 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
|
1253 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
|
1254 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
|
1255 :g_strdup_printf(_("Register New Account at %s"), from); |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1256 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
|
1257 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
|
1258 (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
|
1259 _("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
|
1260 purple_connection_get_account(js->gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1261 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
|
1262 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
|
1263 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1264 |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1265 g_free(instructions); |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1266 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1267 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1268 void jabber_register_start(JabberStream *js) |
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 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1271 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1272 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
|
1273 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1274 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1275 |
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 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
|
1277 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
|
1278 |
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
|
1279 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
|
1280 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
|
1281 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
|
1282 } |
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 |
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
|
1284 void jabber_register_account(PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1285 { |
15822 | 1286 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
|
1287 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1288 JabberBuddy *my_jb = NULL; |
15822 | 1289 const char *connect_server = purple_account_get_string(account, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1290 "connect_server", ""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1291 const char *server; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1292 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1293 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
|
1294 js->gc = gc; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1295 js->registration = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1296 js->iq_callbacks = 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
|
1297 g_free, g_free); |
15822 | 1298 js->user = jabber_id_new(purple_account_get_username(account)); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1299 js->next_id = g_random_int(); |
21977
cacc01b50a23
Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21973
diff
changeset
|
1300 js->old_length = 0; |
26759
6faa5d5b4f44
Don't breaking if the user runs `/ping <user's server>` a bunch.
Paul Aurich <paul@darkrain42.org>
parents:
26748
diff
changeset
|
1301 js->keepalive_timeout = -1; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1302 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1303 if(!js->user) { |
21358 | 1304 purple_connection_error_reason (gc, |
1305 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
1306 _("Invalid XMPP ID")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1307 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1308 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1309 |
15822 | 1310 js->write_buffer = purple_circ_buffer_new(512); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1311 |
15822 | 1312 if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE))) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1313 my_jb->subscription |= JABBER_SUB_BOTH; |
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 server = connect_server[0] ? connect_server : js->user->domain; |
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
|
1316 js->certificate_CN = g_strdup(server); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1317 |
26080
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1318 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
|
1319 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
|
1320 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
|
1321 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1322 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
|
1323 |
26592
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1324 /* TODO: Just use purple_url_parse? */ |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1325 if (!g_ascii_strncasecmp(connect_server, "http://", 7) || !g_ascii_strncasecmp(connect_server, "https://", 8)) { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1326 js->use_bosh = TRUE; |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1327 js->bosh = jabber_bosh_connection_init(js, connect_server); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1328 if (!js->bosh) { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1329 purple_connection_error_reason (js->gc, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1330 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1331 _("Malformed BOSH Connect Server")); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1332 return; |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1333 } |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1334 jabber_bosh_connection_connect(js->bosh); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1335 return; |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1336 } else { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1337 js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1338 } |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1339 |
15822 | 1340 if(purple_account_get_bool(account, "old_ssl", FALSE)) { |
1341 if(purple_ssl_is_supported()) { | |
1342 js->gsc = purple_ssl_connect(account, server, | |
1343 purple_account_get_int(account, "port", 5222), | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1344 jabber_login_callback_ssl, jabber_ssl_connect_failure, gc); |
26592
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1345 if (!js->gsc) { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1346 purple_connection_error_reason (js->gc, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1347 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1348 _("Unable to establish SSL connection")); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1349 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1350 } else { |
21358 | 1351 purple_connection_error_reason (gc, |
1352 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
1353 _("SSL support unavailable")); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1354 } |
26592
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1355 |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1356 return; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1357 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1358 |
26592
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1359 if (connect_server[0]) { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1360 jabber_login_connect(js, js->user->domain, server, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1361 purple_account_get_int(account, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1362 "port", 5222), TRUE); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1363 } else { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1364 js->srv_query_data = purple_srv_resolve("xmpp-client", |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1365 "tcp", |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1366 js->user->domain, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1367 srv_resolved_cb, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26590
diff
changeset
|
1368 js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1369 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1370 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1371 |
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
|
1372 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
|
1373 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
|
1374 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
|
1375 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
|
1376 { |
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
|
1377 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
|
1378 |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26464
diff
changeset
|
1379 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
|
1380 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
|
1381 |
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
|
1382 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
|
1383 _("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
|
1384 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
|
1385 if(js->unregistration_cb) |
18921
ba3b22cd280b
Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18920
diff
changeset
|
1386 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
|
1387 } 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
|
1388 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
|
1389 _("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
|
1390 if(js->unregistration_cb) |
18921
ba3b22cd280b
Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18920
diff
changeset
|
1391 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
|
1392 } |
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
|
1393 } |
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
|
1394 |
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
|
1395 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
|
1396 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
|
1397 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
|
1398 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1399 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
|
1400 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1401 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
|
1402 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1403 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
|
1404 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1405 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
|
1406 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
|
1407 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1408 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
|
1409 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
|
1410 } |
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
1411 |
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
|
1412 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
|
1413 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
|
1414 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
|
1415 |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
1416 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
|
1417 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
|
1418 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
|
1419 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
|
1420 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
|
1421 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
|
1422 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
|
1423 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
|
1424 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
1425 |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
1426 js = 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
|
1427 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1428 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
|
1429 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
|
1430 return; |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1431 } |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1432 |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
1433 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
|
1434 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
|
1435 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
|
1436 |
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
|
1437 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
|
1438 } |
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
|
1439 |
26713
baa3867f2281
Don't call jabber_parser_close_stream in jabber_close, it papers over a real issue.
Paul Aurich <paul@darkrain42.org>
parents:
26711
diff
changeset
|
1440 /* TODO: As Will pointed out in IRC, after being notified by the core to |
baa3867f2281
Don't call jabber_parser_close_stream in jabber_close, it papers over a real issue.
Paul Aurich <paul@darkrain42.org>
parents:
26711
diff
changeset
|
1441 * shutdown, we should async. wait for the server to send us the stream |
baa3867f2281
Don't call jabber_parser_close_stream in jabber_close, it papers over a real issue.
Paul Aurich <paul@darkrain42.org>
parents:
26711
diff
changeset
|
1442 * termination before destorying everything. That seems like it would require |
baa3867f2281
Don't call jabber_parser_close_stream in jabber_close, it papers over a real issue.
Paul Aurich <paul@darkrain42.org>
parents:
26711
diff
changeset
|
1443 * changing the semantics of prpl->close(), so it's a good idea for 3.0.0. |
baa3867f2281
Don't call jabber_parser_close_stream in jabber_close, it papers over a real issue.
Paul Aurich <paul@darkrain42.org>
parents:
26711
diff
changeset
|
1444 */ |
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
|
1445 void jabber_close(PurpleConnection *gc) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1446 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1447 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1448 |
23817
41d6d4217d21
Further decoupled Jingle code from jabber.c:
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23816
diff
changeset
|
1449 /* 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
|
1450 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
|
1451 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1452 /* Don't perform any actions on the ssl connection |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1453 * if we were forcibly disconnected because it will crash |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1454 * on some SSL backends. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1455 */ |
25182
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1456 if (!gc->disconnect_timeout) { |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1457 if (js->use_bosh) |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1458 jabber_bosh_connection_close(js->bosh); |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1459 else |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1460 jabber_send_raw(js, "</stream:stream>", -1); |
26685
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26684
diff
changeset
|
1461 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1462 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1463 if (js->srv_query_data) |
15822 | 1464 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
|
1465 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1466 if(js->gsc) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1467 #ifdef HAVE_OPENSSL |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1468 if (!gc->disconnect_timeout) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1469 #endif |
15822 | 1470 purple_ssl_close(js->gsc); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1471 } else if (js->fd > 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1472 if(js->gc->inpa) |
15822 | 1473 purple_input_remove(js->gc->inpa); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1474 close(js->fd); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1475 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1476 |
25182
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1477 if (js->bosh) |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1478 jabber_bosh_connection_destroy(js->bosh); |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25181
diff
changeset
|
1479 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1480 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
|
1481 |
17876
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17872
diff
changeset
|
1482 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
|
1483 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1484 if(js->iq_callbacks) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1485 g_hash_table_destroy(js->iq_callbacks); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1486 if(js->buddies) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1487 g_hash_table_destroy(js->buddies); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1488 if(js->chats) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1489 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
|
1490 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1491 while(js->chat_servers) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1492 g_free(js->chat_servers->data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1493 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
|
1494 } |
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
|
1495 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1496 while(js->user_directories) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1497 g_free(js->user_directories->data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1498 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
|
1499 } |
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
|
1500 |
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21592
diff
changeset
|
1501 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
|
1502 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
|
1503 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
|
1504 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
|
1505 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
|
1506 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
|
1507 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
|
1508 } |
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
|
1509 |
23686
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23599
diff
changeset
|
1510 while(js->url_datas) { |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23599
diff
changeset
|
1511 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
|
1512 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
|
1513 } |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23599
diff
changeset
|
1514 |
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
|
1515 g_free(js->stream_id); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1516 if(js->user) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1517 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
|
1518 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
|
1519 g_free(js->avatar_hash); |
25146
4040da08a733
Entity Capabilities must be per-JabberStream
Paul Aurich <paul@darkrain42.org>
parents:
25145
diff
changeset
|
1520 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
|
1521 |
15822 | 1522 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
|
1523 if(js->writeh) |
15822 | 1524 purple_input_remove(js->writeh); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1525 #ifdef HAVE_CYRUS_SASL |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1526 if(js->sasl) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1527 sasl_dispose(&js->sasl); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1528 if(js->sasl_mechs) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1529 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
|
1530 g_free(js->sasl_cb); |
18929
67cb28c0ec89
applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18163
diff
changeset
|
1531 #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
|
1532 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
|
1533 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
|
1534 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
|
1535 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
|
1536 g_free(cmd->node); |
17893
11dd7969dd4b
Fixed copy/paste error.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17890
diff
changeset
|
1537 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
|
1538 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
|
1539 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
|
1540 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1541 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
|
1542 g_free(js->certificate_CN); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1543 g_free(js->gmail_last_time); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1544 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
|
1545 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
|
1546 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
|
1547 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
|
1548 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
|
1549 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
|
1550 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
|
1551 g_free(js->old_track); |
22931
9dc7e1d4da15
patch from Andrew Gaul to fix another memleak
Ka-Hing Cheung <khc@hxbc.us>
parents:
22619
diff
changeset
|
1552 g_free(js->expected_rspauth); |
21603
a4b6854737d5
Implement more of XEP-0065 to support sending files through a proxy. To avoid adding strings this close to a release, it only supports using a proxy that is discovered from the server, but we'll include an account option to manually specify a ft proxy in the next release. Lots of this is based on a patch from galt - Fixes #3730, #116, #1768
Daniel Atallah <daniel.atallah@gmail.com>
parents:
21592
diff
changeset
|
1553 |
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
|
1554 if (js->keepalive_timeout != -1) |
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
|
1555 purple_timeout_remove(js->keepalive_timeout); |
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
|
1556 |
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
|
1557 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
|
1558 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
|
1559 |
26080
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1560 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
|
1561 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
|
1562 |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26063
diff
changeset
|
1563 /* 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
|
1564 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
|
1565 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
|
1566 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
|
1567 } |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
1568 |
23599
fa8567fa0ca0
Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23598
diff
changeset
|
1569 g_free(js); |
fa8567fa0ca0
Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23598
diff
changeset
|
1570 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1571 gc->proto_data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1572 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1573 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1574 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
|
1575 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1576 js->state = state; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1577 switch(state) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1578 case JABBER_STREAM_OFFLINE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1579 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1580 case JABBER_STREAM_CONNECTING: |
15822 | 1581 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
|
1582 JABBER_CONNECT_STEPS); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1583 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1584 case JABBER_STREAM_INITIALIZING: |
15822 | 1585 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
|
1586 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1587 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1588 break; |
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
|
1589 case JABBER_STREAM_INITIALIZING_ENCRYPTION: |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
1590 purple_connection_update_progress(js->gc, _("Initializing SSL/TLS"), |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
1591 6, JABBER_CONNECT_STEPS); |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17876
diff
changeset
|
1592 break; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1593 case JABBER_STREAM_AUTHENTICATING: |
15822 | 1594 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
|
1595 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
|
1596 if(js->protocol_version == JABBER_PROTO_0_9 && js->registration) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1597 jabber_register_start(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1598 } else if(js->auth_type == JABBER_AUTH_IQ_AUTH) { |
24807
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24666
diff
changeset
|
1599 /* with dreamhost's xmpp server at least, you have to |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24666
diff
changeset
|
1600 specify a resource or you will get a "406: Not |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24666
diff
changeset
|
1601 Acceptable" |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24666
diff
changeset
|
1602 */ |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24666
diff
changeset
|
1603 if(!js->user->resource || *js->user->resource == '\0') { |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24666
diff
changeset
|
1604 g_free(js->user->resource); |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24666
diff
changeset
|
1605 js->user->resource = g_strdup("Home"); |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24666
diff
changeset
|
1606 } |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24666
diff
changeset
|
1607 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1608 jabber_auth_start_old(js); |
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 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1611 case JABBER_STREAM_REINITIALIZING: |
15822 | 1612 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
|
1613 (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
|
1614 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1615 /* The stream will be reinitialized later, in jabber_recv_cb_ssl() */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1616 js->reinit = TRUE; |
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
|
1617 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1618 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1619 case JABBER_STREAM_CONNECTED: |
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
|
1620 /* now we can alert the core that we're ready to send status */ |
15822 | 1621 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
|
1622 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1623 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1624 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1625 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1626 char *jabber_get_next_id(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1627 { |
15822 | 1628 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
|
1629 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1630 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1631 |
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
|
1632 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
|
1633 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1634 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1635 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1636 js->idle = idle ? time(NULL) - idle : idle; |
26705
fef989505ea2
propagate from branch 'im.pidgin.pidgin' (head 7281ad5ba8e68debd285e06dafebd991e980f3da)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1637 |
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
|
1638 /* 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
|
1639 purple_debug_info("jabber", "sending updated presence for idle\n"); |
26736 | 1640 jabber_presence_send(js, FALSE); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1641 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1642 |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1643 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
|
1644 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
|
1645 xmlnode *child) |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1646 { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1647 JabberIq *result; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1648 xmlnode *item; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1649 PurpleAccount *account; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1650 gboolean is_block; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1651 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1652 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
|
1653 xmlnode *error, *x; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1654 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
|
1655 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
|
1656 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
|
1657 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
|
1658 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1659 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
|
1660 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
|
1661 x = xmlnode_new_child(error, "not-allowed"); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1662 xmlnode_set_namespace(x, "urn:ietf:params:xml:ns:xmpp-stanzas"); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1663 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1664 jabber_iq_send(result); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1665 return; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1666 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1667 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1668 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
|
1669 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
|
1670 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1671 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
|
1672 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
|
1673 /* Unblock everyone */ |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1674 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
|
1675 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1676 while (account->deny != NULL) { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1677 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
|
1678 } |
26957
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1679 } else if (item == NULL) { |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1680 /* An empty <block/> is bogus */ |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1681 xmlnode *error, *x; |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1682 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
|
1683 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
|
1684 |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1685 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
|
1686 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
|
1687 x = xmlnode_new_child(error, "bad-request"); |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1688 xmlnode_set_namespace(x, "urn:ietf:params:xml:ns:xmpp-stanzas"); |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1689 |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1690 jabber_iq_send(result); |
373141b35c52
Avoid an assertion failure and add an error case.
Paul Aurich <paul@darkrain42.org>
parents:
26952
diff
changeset
|
1691 return; |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1692 } else { |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1693 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
|
1694 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
|
1695 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
|
1696 continue; |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1697 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1698 if (is_block) |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1699 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
|
1700 else |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1701 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
|
1702 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1703 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1704 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1705 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
|
1706 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
|
1707 jabber_iq_send(result); |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1708 } |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1709 |
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
|
1710 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
|
1711 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
|
1712 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
|
1713 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1714 xmlnode *blocklist, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1715 PurpleAccount *account; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1716 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1717 blocklist = xmlnode_get_child_with_namespace(packet, |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1718 "blocklist", "urn:xmpp:blocking"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1719 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
|
1720 |
26952
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1721 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
|
1722 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1723 |
26951
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1724 /* 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
|
1725 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
|
1726 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
|
1727 |
10c91922bc1e
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <paul@darkrain42.org>
parents:
26933
diff
changeset
|
1728 /* |
26952
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1729 * 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
|
1730 * 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
|
1731 */ |
26952
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1732 while (account->deny) |
1dcee141997d
The server list is definitive for who is blocked.
Paul Aurich <paul@darkrain42.org>
parents:
26951
diff
changeset
|
1733 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
|
1734 |
24855
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1735 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
|
1736 while (item != NULL) { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1737 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
|
1738 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
|
1739 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
|
1740 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1741 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1742 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1743 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
|
1744 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1745 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1746 xmlnode *blocklist; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1747 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1748 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
|
1749 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1750 blocklist = xmlnode_new_child(iq->node, "blocklist"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1751 xmlnode_set_namespace(blocklist, "urn:xmpp:blocking"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1752 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1753 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
|
1754 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1755 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
|
1756 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1757 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1758 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
|
1759 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1760 JabberStream *js; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1761 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1762 xmlnode *block, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1763 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1764 js = gc->proto_data; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1765 if (js == NULL) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1766 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1767 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1768 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
|
1769 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1770 jabber_google_roster_add_deny(gc, who); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1771 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1772 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1773 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1774 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
|
1775 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1776 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
|
1777 _("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
|
1778 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1779 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1780 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1781 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
|
1782 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1783 block = xmlnode_new_child(iq->node, "block"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1784 xmlnode_set_namespace(block, "urn:xmpp:blocking"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1785 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1786 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
|
1787 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
|
1788 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1789 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
|
1790 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1791 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1792 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
|
1793 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1794 JabberStream *js; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1795 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1796 xmlnode *unblock, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1797 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1798 js = gc->proto_data; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1799 if (js == NULL) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1800 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1801 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1802 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
|
1803 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1804 jabber_google_roster_rem_deny(gc, who); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1805 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1806 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1807 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1808 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
|
1809 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1810 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1811 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
|
1812 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1813 unblock = xmlnode_new_child(iq->node, "unblock"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1814 xmlnode_set_namespace(unblock, "urn:xmpp:blocking"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1815 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1816 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
|
1817 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
|
1818 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1819 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
|
1820 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24807
diff
changeset
|
1821 |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1822 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
|
1823 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
|
1824 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1825 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
|
1826 |
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
|
1827 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
|
1828 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
|
1829 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
|
1830 |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1831 /* 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
|
1832 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
|
1833 |
17845
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1834 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
|
1835 } |
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17835
diff
changeset
|
1836 |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1837 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
|
1838 GList *feature; |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1839 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
|
1840 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
|
1841 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
|
1842 g_free(feat->namespace); |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1843 g_free(feature->data); |
21538 | 1844 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
|
1845 break; |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1846 } |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17841
diff
changeset
|
1847 } |
17836
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17835
diff
changeset
|
1848 } |
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17835
diff
changeset
|
1849 |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1850 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
|
1851 { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1852 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
|
1853 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
|
1854 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
|
1855 g_free(feature); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1856 jabber_features = g_list_remove_link(jabber_features, jabber_features); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1857 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1858 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1859 |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
1860 void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name) { |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1861 GList *identity; |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1862 JabberIdentity *ident; |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1863 /* 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
|
1864 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
|
1865 g_return_if_fail(type != NULL); |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
1866 |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1867 for(identity = jabber_identities; identity; identity = identity->next) { |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1868 JabberIdentity *ident = (JabberIdentity*)identity->data; |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
1869 if (!strcmp(ident->category, category) && |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
1870 !strcmp(ident->type, type) && |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
1871 ((!ident->lang && !lang) || (ident->lang && lang && !strcmp(ident->lang, lang)))) { |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
1872 return; |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
1873 } |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1874 } |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
1875 |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1876 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
|
1877 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
|
1878 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
|
1879 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
|
1880 ident->name = g_strdup(name); |
26768
966d2f2f86c8
Don't crash when the caps cb is NULL and don't corrupt jabber_identities
Paul Aurich <paul@darkrain42.org>
parents:
26760
diff
changeset
|
1881 jabber_identities = g_list_prepend(jabber_identities, ident); |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1882 } |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
1883 |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1884 static void jabber_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
|
1885 { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1886 while (jabber_identities) { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1887 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
|
1888 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
|
1889 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
|
1890 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
|
1891 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
|
1892 g_free(id); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1893 jabber_identities = g_list_remove_link(jabber_identities, jabber_identities); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1894 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1895 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
1896 |
26272
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
1897 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
|
1898 { |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
1899 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
|
1900 (!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
|
1901 } |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26270
diff
changeset
|
1902 |
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
|
1903 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
|
1904 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1905 return "jabber"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1906 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1907 |
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
|
1908 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
|
1909 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1910 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1911 JabberBuddy *jb = NULL; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
1912 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
|
1913 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
1914 if(!gc) |
15497
0d4890637238
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15462
diff
changeset
|
1915 return NULL; |
0d4890637238
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15462
diff
changeset
|
1916 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
1917 js = gc->proto_data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1918 if(js) |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
1919 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
|
1920 |
15822 | 1921 if(!PURPLE_BUDDY_IS_ONLINE(b)) { |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1922 if(jb && (jb->subscription & JABBER_SUB_PENDING || |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1923 !(jb->subscription & JABBER_SUB_TO))) |
15462 | 1924 return "not-authorized"; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1925 } |
15462 | 1926 return NULL; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1927 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1928 |
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
|
1929 char *jabber_status_text(PurpleBuddy *b) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1930 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1931 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
|
1932 JabberBuddy *jb = NULL; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
1933 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
|
1934 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
|
1935 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
1936 if (gc && gc->proto_data) |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
1937 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
|
1938 |
15822 | 1939 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
|
1940 ret = g_strdup(_("Not Authorized")); |
15822 | 1941 } 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
|
1942 ret = g_strdup(jb->error_msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1943 } else { |
26691
803e05b3a871
Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents:
26685
diff
changeset
|
1944 PurplePresence *presence = purple_buddy_get_presence(b); |
803e05b3a871
Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents:
26685
diff
changeset
|
1945 PurpleStatus *status =purple_presence_get_active_status(presence); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1946 char *stripped; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1947 |
26691
803e05b3a871
Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents:
26685
diff
changeset
|
1948 if(!(stripped = purple_markup_strip_html(purple_status_get_attr_string(status, "message")))) { |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
1949 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) { |
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
1950 PurpleStatus *status = purple_presence_get_status(presence, "tune"); |
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
1951 stripped = g_strdup(purple_status_get_attr_string(status, PURPLE_TUNE_TITLE)); |
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
1952 } |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1953 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1954 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1955 if(stripped) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1956 ret = g_markup_escape_text(stripped, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1957 g_free(stripped); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1958 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1959 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1960 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1961 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1962 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1963 |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1964 static void |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
1965 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
|
1966 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
|
1967 { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1968 char *text = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1969 char *res = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1970 char *label, *value; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1971 const char *state; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1972 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1973 if(jbr->status) { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1974 char *tmp; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1975 text = purple_strreplace(jbr->status, "\n", "<br />\n"); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1976 tmp = purple_markup_strip_html(text); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1977 g_free(text); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1978 text = g_markup_escape_text(tmp, -1); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1979 g_free(tmp); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1980 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1981 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1982 if(jbr->name) |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1983 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
|
1984 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1985 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
|
1986 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
|
1987 g_free(text); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1988 text = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1989 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1990 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1991 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
|
1992 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
|
1993 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1994 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
|
1995 g_free(label); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1996 g_free(value); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1997 g_free(text); |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
1998 |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
1999 /* 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
|
2000 /* 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
|
2001 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
|
2002 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
|
2003 if (jbr->idle && multiple_resources) { |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2004 gchar *idle_str = |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2005 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
|
2006 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
|
2007 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
|
2008 g_free(idle_str); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2009 g_free(label); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2010 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2011 g_free(res); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2012 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2013 |
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
|
2014 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
|
2015 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2016 JabberBuddy *jb; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2017 PurpleAccount *account; |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2018 PurpleConnection *gc; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2019 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2020 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
|
2021 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2022 account = purple_buddy_get_account(b); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2023 g_return_if_fail(account != NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2024 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2025 gc = purple_account_get_connection(account); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2026 g_return_if_fail(gc != NULL); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2027 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
|
2028 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2029 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
|
2030 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2031 if(jb) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2032 JabberBuddyResource *jbr = NULL; |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2033 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
|
2034 const char *sub; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2035 GList *l; |
19723
eedf2918aace
Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@gmail.com>
parents:
19697
diff
changeset
|
2036 const char *mood; |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2037 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
|
2038 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
|
2039 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
|
2040 |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2041 /* 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
|
2042 if (top_jbr) { |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2043 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
|
2044 multiple_resources); |
1ad482221d70
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents:
25697
diff
changeset
|
2045 } |
25697
8202f850ca9e
Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents:
25696
diff
changeset
|
2046 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2047 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
|
2048 jbr = l->data; |
25695
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2049 /* the remaining resources */ |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2050 if (jbr != top_jbr) { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25692
diff
changeset
|
2051 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
|
2052 multiple_resources); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2053 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2054 } |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2055 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2056 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
|
2057 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
|
2058 |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2059 status = purple_presence_get_active_status(presence); |
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
|
2060 mood = purple_status_get_attr_string(status, "mood"); |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23180
diff
changeset
|
2061 if(mood != NULL) { |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23180
diff
changeset
|
2062 const char *moodtext; |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23180
diff
changeset
|
2063 moodtext = purple_status_get_attr_string(status, "moodtext"); |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23180
diff
changeset
|
2064 if(moodtext != NULL) { |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23180
diff
changeset
|
2065 char *moodplustext = g_strdup_printf("%s (%s)", mood, moodtext); |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23180
diff
changeset
|
2066 |
17846
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17845
diff
changeset
|
2067 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
|
2068 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
|
2069 } else |
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17845
diff
changeset
|
2070 purple_notify_user_info_add_pair(user_info, _("Mood"), mood); |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2071 } |
22000
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2072 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
|
2073 PurpleStatus *tune = purple_presence_get_status(presence, "tune"); |
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2074 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
|
2075 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
|
2076 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
|
2077 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
|
2078 if (playing) { |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2079 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
|
2080 g_free(playing); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21977
diff
changeset
|
2081 } |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2082 } |
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
|
2083 |
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
|
2084 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
|
2085 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
|
2086 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
|
2087 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
|
2088 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
|
2089 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
|
2090 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
|
2091 } 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
|
2092 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
|
2093 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
|
2094 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
|
2095 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
|
2096 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
|
2097 sub = _("None"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2098 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2099 |
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
|
2100 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
|
2101 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2102 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2103 |
15822 | 2104 if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) { |
2105 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
|
2106 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2107 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2108 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2109 |
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
|
2110 GList *jabber_status_types(PurpleAccount *account) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2111 { |
15822 | 2112 PurpleStatusType *type; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2113 GList *types = NULL; |
15822 | 2114 PurpleValue *priority_value; |
25132
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
2115 PurpleValue *buzz_enabled; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2116 |
15822 | 2117 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2118 purple_value_set_int(priority_value, 1); | |
25132
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
2119 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
24058
diff
changeset
|
2120 purple_value_set_boolean(buzz_enabled, TRUE); |
15822 | 2121 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
|
2122 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
|
2123 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2124 "priority", _("Priority"), priority_value, |
15822 | 2125 "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
|
2126 "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
|
2127 "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
|
2128 "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
|
2129 "buzz", _("Allow Buzz"), buzz_enabled, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2130 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2131 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2132 |
15822 | 2133 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2134 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
|
2135 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
|
2136 purple_value_set_boolean(buzz_enabled, TRUE); |
15822 | 2137 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
|
2138 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
|
2139 _("Chatty"), TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2140 "priority", _("Priority"), priority_value, |
15822 | 2141 "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
|
2142 "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
|
2143 "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
|
2144 "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
|
2145 "buzz", _("Allow Buzz"), buzz_enabled, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2146 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2147 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2148 |
15822 | 2149 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2150 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
|
2151 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
|
2152 purple_value_set_boolean(buzz_enabled, TRUE); |
15822 | 2153 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
|
2154 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
|
2155 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2156 "priority", _("Priority"), priority_value, |
15822 | 2157 "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
|
2158 "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
|
2159 "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
|
2160 "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
|
2161 "buzz", _("Allow Buzz"), buzz_enabled, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2162 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2163 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2164 |
15822 | 2165 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2166 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
|
2167 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
|
2168 purple_value_set_boolean(buzz_enabled, TRUE); |
15822 | 2169 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
|
2170 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
|
2171 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2172 "priority", _("Priority"), priority_value, |
15822 | 2173 "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
|
2174 "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
|
2175 "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
|
2176 "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
|
2177 "buzz", _("Allow Buzz"), buzz_enabled, |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2178 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2179 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2180 |
15822 | 2181 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2182 purple_value_set_int(priority_value, 0); | |
2183 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
|
2184 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
|
2185 _("Do Not Disturb"), TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2186 "priority", _("Priority"), priority_value, |
15822 | 2187 "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
|
2188 "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
|
2189 "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
|
2190 "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
|
2191 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2192 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2193 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2194 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2195 if(js->protocol_version == JABBER_PROTO_0_9) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2196 m = g_list_append(m, _("Invisible")); |
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 |
15822 | 2199 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
|
2200 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
|
2201 NULL, TRUE, TRUE, FALSE, |
15822 | 2202 "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
|
2203 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2204 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2205 |
20570
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2206 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
|
2207 "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
|
2208 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
|
2209 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
|
2210 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
|
2211 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
|
2212 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
|
2213 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
|
2214 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
|
2215 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
|
2216 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
|
2217 NULL); |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2218 types = g_list_append(types, type); |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2219 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2220 return types; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2221 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2222 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2223 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
|
2224 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
|
2225 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
|
2226 xmlnode *packet, gpointer data) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2227 { |
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
|
2228 if (type == JABBER_IQ_RESULT) { |
15822 | 2229 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
|
2230 _("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
|
2231 |
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2232 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
|
2233 } 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
|
2234 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
|
2235 |
15822 | 2236 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
|
2237 _("Error changing password"), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2238 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2239 } |
21058
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2240 |
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2241 g_free(data); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2242 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2243 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2244 static void jabber_password_change_cb(JabberStream *js, |
15822 | 2245 PurpleRequestFields *fields) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2246 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2247 const char *p1, *p2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2248 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2249 xmlnode *query, *y; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2250 |
15822 | 2251 p1 = purple_request_fields_get_string(fields, "password1"); |
2252 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
|
2253 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2254 if(strcmp(p1, p2)) { |
15822 | 2255 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
|
2256 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2257 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2258 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2259 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
|
2260 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2261 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
|
2262 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2263 query = xmlnode_get_child(iq->node, "query"); |
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 y = xmlnode_new_child(query, "username"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2266 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
|
2267 y = xmlnode_new_child(query, "password"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2268 xmlnode_insert_data(y, p1, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2269 |
21058
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2270 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
|
2271 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2272 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2273 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2274 |
15822 | 2275 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
|
2276 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2277 |
15822 | 2278 PurpleConnection *gc = (PurpleConnection *) action->context; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2279 JabberStream *js = gc->proto_data; |
15822 | 2280 PurpleRequestFields *fields; |
2281 PurpleRequestFieldGroup *group; | |
2282 PurpleRequestField *field; | |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2283 |
15822 | 2284 fields = purple_request_fields_new(); |
2285 group = purple_request_field_group_new(NULL); | |
2286 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
|
2287 |
15822 | 2288 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
|
2289 "", FALSE); |
15822 | 2290 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
|
2291 purple_request_field_set_required(field, TRUE); |
15822 | 2292 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
|
2293 |
15822 | 2294 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
|
2295 "", FALSE); |
15822 | 2296 purple_request_field_string_set_masked(field, TRUE); |
18323
e3df2f61d03d
Make password fileds in Jabber's Change Password dialog required. Fixes #1907
Sean Egan <seanegan@gmail.com>
parents:
18237
diff
changeset
|
2297 purple_request_field_set_required(field, TRUE); |
15822 | 2298 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
|
2299 |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2300 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
|
2301 _("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
|
2302 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
|
2303 _("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
|
2304 purple_connection_get_account(gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2305 js); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2306 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2307 |
16240
547c76fe2e7a
This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@gmail.com>
parents:
16068
diff
changeset
|
2308 GList *jabber_actions(PurplePlugin *plugin, gpointer context) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2309 { |
17848
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17846
diff
changeset
|
2310 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
|
2311 JabberStream *js = gc->proto_data; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2312 GList *m = NULL; |
15822 | 2313 PurplePluginAction *act; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2314 |
15822 | 2315 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
|
2316 jabber_setup_set_info); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2317 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2318 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2319 /* if (js->protocol_options & CHANGE_PASSWORD) { */ |
15822 | 2320 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
|
2321 jabber_password_change); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2322 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2323 /* } */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2324 |
15822 | 2325 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
|
2326 jabber_user_search_begin); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2327 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2328 |
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
|
2329 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
|
2330 |
17848
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17846
diff
changeset
|
2331 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
|
2332 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
|
2333 |
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
|
2334 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
|
2335 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
|
2336 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2337 return m; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2338 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2339 |
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
|
2340 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
|
2341 { |
15822 | 2342 PurpleBlistNode *gnode, *cnode; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2343 JabberID *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2344 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2345 if(!(jid = jabber_id_new(name))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2346 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2347 |
25798
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2348 for(gnode = purple_blist_get_root(); gnode; |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2349 gnode = purple_blist_node_get_sibling_next(gnode)) { |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2350 for(cnode = purple_blist_node_get_first_child(gnode); |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2351 cnode; |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25141
diff
changeset
|
2352 cnode = purple_blist_node_get_sibling_next(cnode)) { |
15822 | 2353 PurpleChat *chat = (PurpleChat*)cnode; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2354 const char *room, *server; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2355 GHashTable *components; |
15822 | 2356 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
|
2357 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2358 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2359 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
|
2360 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2361 |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2362 components = purple_chat_get_components(chat); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2363 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
|
2364 continue; |
25130
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24058
diff
changeset
|
2365 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
|
2366 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2367 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2368 if(jid->node && jid->domain && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2369 !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
|
2370 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2371 return chat; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2372 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2373 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2374 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2375 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2376 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2377 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2378 |
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
|
2379 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
|
2380 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2381 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2382 JabberID *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2383 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2384 JabberBuddyResource *jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2385 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2386 if(!(jid = jabber_id_new(who))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2387 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2388 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2389 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
|
2390 (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
|
2391 if(jbr->thread_id) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2392 g_free(jbr->thread_id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2393 jbr->thread_id = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2394 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2395 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2396 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2397 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2398 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2399 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2400 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2401 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
|
2402 xmlnode *packet, |
21358 | 2403 PurpleConnectionError *reason) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2404 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2405 xmlnode *error; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2406 const char *code = NULL, *text = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2407 const char *xmlns = xmlnode_get_namespace(packet); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2408 char *cdata = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2409 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2410 #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
|
2411 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
|
2412 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2413 if((error = xmlnode_get_child(packet, "error"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2414 cdata = xmlnode_get_data(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2415 code = xmlnode_get_attrib(error, "code"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2416 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2417 /* Stanza errors */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2418 if(xmlnode_get_child(error, "bad-request")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2419 text = _("Bad Request"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2420 } else if(xmlnode_get_child(error, "conflict")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2421 text = _("Conflict"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2422 } 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
|
2423 text = _("Feature Not Implemented"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2424 } else if(xmlnode_get_child(error, "forbidden")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2425 text = _("Forbidden"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2426 } else if(xmlnode_get_child(error, "gone")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2427 text = _("Gone"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2428 } 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
|
2429 text = _("Internal Server Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2430 } 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
|
2431 text = _("Item Not Found"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2432 } 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
|
2433 text = _("Malformed XMPP ID"); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2434 } 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
|
2435 text = _("Not Acceptable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2436 } 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
|
2437 text = _("Not Allowed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2438 } 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
|
2439 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2440 } 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
|
2441 text = _("Payment Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2442 } 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
|
2443 text = _("Recipient Unavailable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2444 } else if(xmlnode_get_child(error, "redirect")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2445 /* XXX */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2446 } 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
|
2447 text = _("Registration Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2448 } else if(xmlnode_get_child(error, "remote-server-not-found")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2449 text = _("Remote Server Not Found"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2450 } 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
|
2451 text = _("Remote Server Timeout"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2452 } 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
|
2453 text = _("Server Overloaded"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2454 } 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
|
2455 text = _("Service Unavailable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2456 } 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
|
2457 text = _("Subscription Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2458 } 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
|
2459 text = _("Unexpected Request"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2460 } 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
|
2461 text = _("Unknown Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2462 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2463 } else if(xmlns && !strcmp(xmlns, "urn:ietf:params:xml: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
|
2464 /* 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
|
2465 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
|
2466 if(xmlnode_get_child(packet, "aborted")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2467 text = _("Authorization Aborted"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2468 } 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
|
2469 text = _("Incorrect encoding in authorization"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2470 } 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
|
2471 text = _("Invalid authzid"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2472 } 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
|
2473 text = _("Invalid Authorization Mechanism"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2474 } 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
|
2475 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
|
2476 text = _("Authorization mechanism too weak"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2477 } 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
|
2478 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
|
2479 /* 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
|
2480 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
|
2481 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
|
2482 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2483 } 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
|
2484 text = _("Temporary Authentication Failure"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2485 } 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
|
2486 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
|
2487 text = _("Authentication Failure"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2488 } |
15916
4be5d38ee117
Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <mark@kingant.net>
parents:
15914
diff
changeset
|
2489 } 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
|
2490 (!strcmp(packet->name, "error") && xmlns && |
15917 | 2491 !strcmp(xmlns, "http://etherx.jabber.org/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
|
2492 /* Most common reason as default: */ |
21358 | 2493 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
|
2494 if(xmlnode_get_child(packet, "bad-format")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2495 text = _("Bad Format"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2496 } 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
|
2497 text = _("Bad Namespace Prefix"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2498 } else if(xmlnode_get_child(packet, "conflict")) { |
21358 | 2499 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
|
2500 text = _("Resource Conflict"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2501 } 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
|
2502 text = _("Connection Timeout"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2503 } 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
|
2504 text = _("Host Gone"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2505 } 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
|
2506 text = _("Host Unknown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2507 } 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
|
2508 text = _("Improper Addressing"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2509 } 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
|
2510 text = _("Internal Server Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2511 } 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
|
2512 text = _("Invalid ID"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2513 } 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
|
2514 text = _("Invalid Namespace"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2515 } 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
|
2516 text = _("Invalid XML"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2517 } 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
|
2518 text = _("Non-matching Hosts"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2519 } 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
|
2520 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2521 } 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
|
2522 text = _("Policy Violation"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2523 } 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
|
2524 text = _("Remote Connection Failed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2525 } 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
|
2526 text = _("Resource Constraint"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2527 } 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
|
2528 text = _("Restricted XML"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2529 } 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
|
2530 text = _("See Other Host"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2531 } 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
|
2532 text = _("System Shutdown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2533 } 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
|
2534 text = _("Undefined Condition"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2535 } 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
|
2536 text = _("Unsupported Encoding"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2537 } 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
|
2538 text = _("Unsupported Stanza Type"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2539 } 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
|
2540 text = _("Unsupported Version"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2541 } 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
|
2542 text = _("XML Not Well Formed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2543 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2544 text = _("Stream Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2545 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2546 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2547 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2548 #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
|
2549 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2550 if(text || cdata) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2551 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
|
2552 code ? ": " : "", text ? text : cdata); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2553 g_free(cdata); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2554 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2555 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2556 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2557 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2558 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2559 |
15822 | 2560 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
|
2561 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
|
2562 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2563 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
|
2564 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2565 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
|
2566 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
|
2567 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2568 jabber_chat_request_room_configure(chat); |
15822 | 2569 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2570 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2571 |
15822 | 2572 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
|
2573 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
|
2574 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2575 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
|
2576 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2577 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
|
2578 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
|
2579 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2580 jabber_chat_register(chat); |
15822 | 2581 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2582 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2583 |
15822 | 2584 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
|
2585 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
|
2586 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2587 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
|
2588 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2589 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
|
2590 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
|
2591 |
26684
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2592 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
|
2593 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
|
2594 else { |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2595 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
|
2596 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
|
2597 |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2598 if (cur) { |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2599 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
|
2600 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
|
2601 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
|
2602 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
|
2603 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
|
2604 } else |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2605 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
|
2606 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
|
2607 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
|
2608 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
|
2609 } |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26567
diff
changeset
|
2610 |
15822 | 2611 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2612 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2613 |
15822 | 2614 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
|
2615 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
|
2616 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2617 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
|
2618 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2619 if(!chat || !args || !args[0]) |
15822 | 2620 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2621 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2622 jabber_chat_change_nick(chat, args[0]); |
15822 | 2623 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2624 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2625 |
15822 | 2626 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
|
2627 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
|
2628 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2629 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
|
2630 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2631 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
|
2632 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
|
2633 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2634 jabber_chat_part(chat, args ? args[0] : NULL); |
15822 | 2635 return PURPLE_CMD_RET_OK; |
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 |
15822 | 2638 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
|
2639 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
|
2640 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2641 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
|
2642 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2643 if(!chat || !args || !args[0]) |
15822 | 2644 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2645 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2646 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
|
2647 *error = g_strdup_printf(_("Unable to ban user %s"), args[0]); |
15822 | 2648 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2649 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2650 |
15822 | 2651 return PURPLE_CMD_RET_OK; |
15373
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 |
15822 | 2654 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
|
2655 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
|
2656 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2657 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
|
2658 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2659 if (!chat || !args || !args[0]) |
15822 | 2660 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2661 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2662 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
|
2663 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
|
2664 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
|
2665 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
|
2666 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
|
2667 *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[0]); |
15822 | 2668 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2669 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2670 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2671 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
|
2672 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
|
2673 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
|
2674 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2675 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
|
2676 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
|
2677 *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
|
2678 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
|
2679 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
|
2680 } |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2681 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2682 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
|
2683 } else { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2684 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
|
2685 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2686 |
15822 | 2687 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2688 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2689 |
15822 | 2690 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
|
2691 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
|
2692 { |
18855
28a7c9dbbc2b
Fix uninitialized variable access.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18711
diff
changeset
|
2693 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
|
2694 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2695 if (!chat || !args || !args[0]) |
15822 | 2696 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2697 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2698 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
|
2699 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
|
2700 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
|
2701 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
|
2702 *error = g_strdup_printf(_("Unknown role: \"%s\""), args[0]); |
15822 | 2703 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2704 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2705 |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2706 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
|
2707 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
|
2708 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
|
2709 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2710 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
|
2711 if (!jabber_chat_role_user(chat, nicks[i], args[0])) { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2712 *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
|
2713 args[0], nicks[i]); |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2714 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
|
2715 } |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2716 |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2717 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
|
2718 } else { |
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
2719 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
|
2720 } |
15822 | 2721 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2722 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2723 |
15822 | 2724 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
|
2725 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
|
2726 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2727 if(!args || !args[0]) |
15822 | 2728 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2729 |
15822 | 2730 jabber_chat_invite(purple_conversation_get_gc(conv), |
2731 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
|
2732 args[0]); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2733 |
15822 | 2734 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2735 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2736 |
15822 | 2737 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
|
2738 const char *cmd, char **args, char **error, void *data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2739 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2740 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
|
2741 GHashTable *components; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2742 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2743 if(!chat || !args || !args[0]) |
15822 | 2744 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2745 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2746 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
|
2747 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2748 g_hash_table_replace(components, "room", args[0]); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2749 g_hash_table_replace(components, "server", chat->server); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2750 g_hash_table_replace(components, "handle", chat->handle); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2751 if(args[1]) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2752 g_hash_table_replace(components, "password", args[1]); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2753 |
15822 | 2754 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
|
2755 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2756 g_hash_table_destroy(components); |
15822 | 2757 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2758 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2759 |
15822 | 2760 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
|
2761 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
|
2762 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2763 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
|
2764 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2765 if(!chat || !args || !args[0]) |
15822 | 2766 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2767 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2768 if(!jabber_chat_kick_user(chat, args[0], args[1])) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2769 *error = g_strdup_printf(_("Unable to kick user %s"), args[0]); |
15822 | 2770 return PURPLE_CMD_RET_FAILED; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2771 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2772 |
15822 | 2773 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2774 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2775 |
15822 | 2776 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
|
2777 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
|
2778 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2779 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
|
2780 char *who; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2781 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2782 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
|
2783 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
|
2784 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2785 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
|
2786 |
15822 | 2787 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
|
2788 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2789 g_free(who); |
15822 | 2790 return PURPLE_CMD_RET_OK; |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2791 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2792 |
17835
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
2793 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
|
2794 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
|
2795 { |
25980
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
2796 PurpleAccount *account; |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
2797 PurpleConnection *pc; |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
2798 |
17835
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
2799 if(!args || !args[0]) |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
2800 return PURPLE_CMD_RET_FAILED; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
2801 |
25980
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
2802 account = purple_conversation_get_account(conv); |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
2803 pc = purple_account_get_connection(account); |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
2804 |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25979
diff
changeset
|
2805 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
|
2806 *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
|
2807 return PURPLE_CMD_RET_FAILED; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
2808 } |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
2809 |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
2810 return PURPLE_CMD_RET_OK; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
2811 } |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17834
diff
changeset
|
2812 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2813 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
|
2814 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2815 JabberBuddy *jb; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2816 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
|
2817 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
|
2818 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
|
2819 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
|
2820 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
|
2821 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
|
2822 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2823 if(!username) |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2824 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2825 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2826 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
|
2827 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
|
2828 *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
|
2829 "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
|
2830 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2831 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2832 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2833 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
|
2834 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
|
2835 *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
|
2836 alias); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2837 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2838 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2839 |
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
|
2840 if (jabber_resource_has_capability(jbr, XEP_0224_NAMESPACE)) { |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
2841 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
|
2842 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
|
2843 |
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
|
2844 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
|
2845 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
|
2846 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
|
2847 |
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
|
2848 /* 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
|
2849 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
|
2850 |
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
|
2851 buzz = xmlnode_new_child(msg, "attention"); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
2852 xmlnode_set_namespace(buzz, XEP_0224_NAMESPACE); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2853 |
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
|
2854 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
|
2855 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
|
2856 |
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
|
2857 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
|
2858 } 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
|
2859 *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
|
2860 "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
|
2861 return FALSE; |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2862 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2863 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2864 |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
2865 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv, |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
2866 const char *cmd, char **args, char **error, void *data) |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
2867 { |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
2868 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
|
2869 const gchar *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
|
2870 |
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
|
2871 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
|
2872 /* 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
|
2873 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
|
2874 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
|
2875 } 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
|
2876 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
|
2877 } |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
25133
diff
changeset
|
2878 } 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
|
2879 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
|
2880 } |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
2881 |
25706
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2882 if (_jabber_send_buzz(js, who, error)) { |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2883 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
|
2884 gchar *str; |
25706
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2885 PurpleBuddy *buddy = |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
2886 purple_find_buddy(purple_connection_get_account(conv->account->gc), |
25706
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2887 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
|
2888 |
25706
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2889 if (buddy != NULL) |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2890 alias = purple_buddy_get_contact_alias(buddy); |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2891 else |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2892 alias = 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
|
2893 |
25706
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2894 str = g_strdup_printf(_("Buzzing %s..."), alias); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
2895 purple_conversation_write(conv, NULL, str, |
25706
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2896 PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, time(NULL)); |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2897 g_free(str); |
25952
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25951
diff
changeset
|
2898 |
25706
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2899 return PURPLE_CMD_RET_OK; |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2900 } else { |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
2901 return PURPLE_CMD_RET_FAILED; |
25706
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25705
diff
changeset
|
2902 } |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
2903 } |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
2904 |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2905 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
|
2906 { |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2907 static GList *types = NULL; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2908 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2909 if (!types) { |
22097
eab7d03edfcb
This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22034
diff
changeset
|
2910 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
|
2911 _("%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
|
2912 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2913 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2914 return types; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2915 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2916 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2917 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
|
2918 { |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2919 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
|
2920 gchar *error = NULL; |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2921 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2922 if (!_jabber_send_buzz(js, username, &error)) { |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2923 purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)"); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2924 g_free(error); |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2925 return FALSE; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2926 } |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2927 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2928 return TRUE; |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2929 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2930 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2931 |
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
|
2932 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
|
2933 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2934 return TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2935 } |
23787
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
2936 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2937 #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
|
2938 gboolean |
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26454
diff
changeset
|
2939 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
|
2940 { |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
2941 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
|
2942 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
|
2943 |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
2944 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
|
2945 } |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
2946 |
26997
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26987
diff
changeset
|
2947 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
|
2948 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
|
2949 { |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
2950 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
|
2951 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
|
2952 |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
2953 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
|
2954 } |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
2955 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2956 typedef struct { |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
2957 PurpleAccount *account; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2958 gchar *who; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2959 PurpleMediaSessionType type; |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2960 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2961 } JabberMediaRequest; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2962 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2963 static void |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2964 jabber_media_cancel_cb(JabberMediaRequest *request, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2965 PurpleRequestFields *fields) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2966 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2967 g_free(request->who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2968 g_free(request); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2969 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2970 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2971 static void |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2972 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
|
2973 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2974 PurpleRequestField *field = |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2975 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
|
2976 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
|
2977 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
|
2978 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
|
2979 (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
|
2980 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
|
2981 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2982 g_free(who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2983 g_free(request->who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2984 g_free(request); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2985 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2986 #endif |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2987 |
26365
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26335
diff
changeset
|
2988 gboolean |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
2989 jabber_initiate_media(PurpleAccount *account, const char *who, |
23869
551a462b346a
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23867
diff
changeset
|
2990 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
|
2991 { |
26334
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26279
diff
changeset
|
2992 #ifdef USE_VV |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
2993 JabberStream *js = (JabberStream *) |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
2994 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
|
2995 JabberBuddy *jb; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2996 JabberBuddyResource *jbr = NULL; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
2997 char *resource; |
25005
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
2998 |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
2999 if (!js) { |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3000 purple_debug_error("jabber", |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3001 "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
|
3002 return FALSE; |
25005
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3003 } |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3004 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3005 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3006 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
|
3007 /* 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
|
3008 * default or anything, just do it */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3009 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3010 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
|
3011 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
|
3012 g_free(resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3013 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3014 if (type & PURPLE_MEDIA_AUDIO && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3015 !jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3016 JINGLE_APP_RTP_SUPPORT_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3017 jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3018 GOOGLE_VOICE_CAP)) |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3019 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
|
3020 else |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3021 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
|
3022 } |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24986
diff
changeset
|
3023 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3024 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
|
3025 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3026 if(!jb || !jb->resources) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3027 /* 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
|
3028 * 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
|
3029 * 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
|
3030 char *msg; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3031 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3032 if(!jb) { |
26436
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26432
diff
changeset
|
3033 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
|
3034 } else if(jb->subscription & JABBER_SUB_TO) { |
26436
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26432
diff
changeset
|
3035 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
|
3036 } else { |
26436
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26432
diff
changeset
|
3037 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
|
3038 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3039 |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3040 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
|
3041 _("Media Initiation Failed"), msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3042 g_free(msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3043 return FALSE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3044 } else if(!jb->resources->next) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3045 /* 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
|
3046 * 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
|
3047 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3048 gboolean result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3049 jbr = jb->resources->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3050 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
|
3051 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
|
3052 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3053 return result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3054 } else { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3055 /* we've got multiple resources, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3056 * 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
|
3057 GList *l; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3058 char *msg; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3059 PurpleRequestFields *fields; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3060 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
|
3061 "resource", _("Resource"), 0); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3062 PurpleRequestFieldGroup *group; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3063 JabberMediaRequest *request; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3064 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3065 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
|
3066 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3067 JabberBuddyResource *ljbr = l->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3068 PurpleMediaCaps caps; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3069 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3070 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
|
3071 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
|
3072 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3073 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3074 if ((type & PURPLE_MEDIA_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3075 (type & PURPLE_MEDIA_VIDEO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3076 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
|
3077 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3078 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3079 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3080 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3081 } else if (type & (PURPLE_MEDIA_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3082 (caps & PURPLE_MEDIA_CAPS_AUDIO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3083 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3084 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3085 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3086 }else if (type & (PURPLE_MEDIA_VIDEO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3087 (caps & PURPLE_MEDIA_CAPS_VIDEO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3088 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3089 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3090 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3091 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3092 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3093 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3094 if (jbr == NULL) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3095 purple_debug_error("jabber", |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3096 "No resources available\n"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3097 return FALSE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3098 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3099 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3100 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
|
3101 field)) <= 1) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3102 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3103 gboolean result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3104 purple_request_field_destroy(field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3105 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
|
3106 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
|
3107 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3108 return result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3109 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3110 |
26436
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26432
diff
changeset
|
3111 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
|
3112 fields = purple_request_fields_new(); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3113 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
|
3114 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
|
3115 request->account = account; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3116 request->who = g_strdup(who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3117 request->type = type; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3118 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3119 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
|
3120 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
|
3121 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
|
3122 NULL, fields, _("Initiate Media"), |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3123 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
|
3124 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
|
3125 account, who, NULL, request); |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3126 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3127 g_free(msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3128 return TRUE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3129 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3130 #endif |
26365
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26335
diff
changeset
|
3131 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
|
3132 } |
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
3133 |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3134 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
|
3135 { |
26334
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26279
diff
changeset
|
3136 #ifdef USE_VV |
26524
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3137 JabberStream *js = (JabberStream *) |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26477
diff
changeset
|
3138 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
|
3139 JabberBuddy *jb; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3140 JabberBuddyResource *jbr; |
26108
d6e23439b77c
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
3141 PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE; |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3142 gchar *resource; |
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
|
3143 |
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
|
3144 if (!js) { |
26418
da651b0f40a1
Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26365
diff
changeset
|
3145 purple_debug_info("jabber", |
da651b0f40a1
Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26365
diff
changeset
|
3146 "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
|
3147 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
|
3148 } |
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
|
3149 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3150 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
|
3151 /* 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
|
3152 * default or anything, just do it */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3153 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3154 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
|
3155 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
|
3156 g_free(resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3157 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3158 if (!jbr) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3159 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
|
3160 " Can't find resource %s\n", who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3161 return caps; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3162 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3163 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3164 if (jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3165 JINGLE_APP_RTP_SUPPORT_AUDIO)) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3166 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
|
3167 PURPLE_MEDIA_CAPS_AUDIO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3168 if (jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3169 JINGLE_APP_RTP_SUPPORT_VIDEO)) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3170 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
|
3171 PURPLE_MEDIA_CAPS_VIDEO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3172 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
|
3173 PURPLE_MEDIA_CAPS_VIDEO) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3174 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3175 if (caps != PURPLE_MEDIA_CAPS_NONE) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3176 if (!jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3177 JINGLE_TRANSPORT_ICEUDP) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3178 !jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3179 JINGLE_TRANSPORT_RAWUDP)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3180 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
|
3181 "support the same transport types\n"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3182 caps = PURPLE_MEDIA_CAPS_NONE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3183 } else |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3184 caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION | |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3185 PURPLE_MEDIA_CAPS_CHANGE_DIRECTION; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3186 } |
26997
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26987
diff
changeset
|
3187 if (jabber_resource_has_capability(jbr, GOOGLE_VOICE_CAP)) { |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3188 caps |= PURPLE_MEDIA_CAPS_AUDIO; |
26997
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26987
diff
changeset
|
3189 if (jabber_resource_has_capability(jbr, |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26987
diff
changeset
|
3190 GOOGLE_VIDEO_CAP)) |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26987
diff
changeset
|
3191 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; |
72bcdcb0629f
Add Gmail video support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26987
diff
changeset
|
3192 } |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3193 return caps; |
23814
d0ac3c438b71
Check remote JID's capabilities for audio and video XEP support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
23812
diff
changeset
|
3194 } |
24970
99055b8db16b
Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24967
diff
changeset
|
3195 |
26432
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3196 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
|
3197 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3198 if(!jb || !jb->resources) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3199 /* no resources online, we're trying to get caps for someone |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3200 * 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
|
3201 * someone who is offline. */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3202 return caps; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3203 } else if(!jb->resources->next) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3204 /* 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
|
3205 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3206 jbr = jb->resources->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3207 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
|
3208 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
|
3209 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3210 } else { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3211 /* we've got multiple resources, combine their caps */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3212 GList *l; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3213 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3214 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
|
3215 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3216 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3217 jbr = l->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3218 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
|
3219 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
|
3220 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26418
diff
changeset
|
3221 } |
24970
99055b8db16b
Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
24967
diff
changeset
|
3222 } |
26108
d6e23439b77c
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
3223 |
d6e23439b77c
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26086
diff
changeset
|
3224 return caps; |
26334
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26279
diff
changeset
|
3225 #else |
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26279
diff
changeset
|
3226 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
|
3227 #endif |
23787
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
3228 } |
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23785
diff
changeset
|
3229 |
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
|
3230 void jabber_register_commands(void) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3231 { |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3232 PurpleCmdId id; |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3233 id = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL, |
15822 | 3234 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
|
3235 "prpl-jabber", jabber_cmd_chat_config, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3236 _("config: Configure a chat room."), NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3237 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3238 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3239 id = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL, |
15822 | 3240 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
|
3241 "prpl-jabber", jabber_cmd_chat_config, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3242 _("configure: Configure a chat room."), NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3243 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3244 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3245 id = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL, |
15822 | 3246 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
|
3247 "prpl-jabber", jabber_cmd_chat_nick, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3248 _("nick <new nickname>: Change your nickname."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3249 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3250 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3251 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3252 id = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL, |
15822 | 3253 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3254 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
|
3255 jabber_cmd_chat_part, _("part [room]: Leave the room."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3256 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3257 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3258 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3259 id = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL, |
15822 | 3260 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
|
3261 "prpl-jabber", jabber_cmd_chat_register, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3262 _("register: Register with a chat room."), NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3263 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3264 |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3265 /* 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
|
3266 id = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, |
15822 | 3267 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3268 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
|
3269 jabber_cmd_chat_topic, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3270 _("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
|
3271 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3272 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3273 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3274 id = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3275 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3276 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
|
3277 jabber_cmd_chat_ban, |
22619
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22459
diff
changeset
|
3278 _("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
|
3279 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3280 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3281 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3282 id = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3283 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3284 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
|
3285 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
|
3286 _("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
|
3287 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3288 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3289 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3290 id = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3291 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3292 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
|
3293 jabber_cmd_chat_role, |
26802
af2b87aa82ee
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <paul@darkrain42.org>
parents:
26777
diff
changeset
|
3294 _("role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the users with an 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
|
3295 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3296 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3297 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3298 id = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3299 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3300 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
|
3301 jabber_cmd_chat_invite, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3302 _("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
|
3303 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3304 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3305 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3306 id = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3307 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3308 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
|
3309 jabber_cmd_chat_join, |
22619
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22459
diff
changeset
|
3310 _("join: <room> [password]: Join a chat on this server."), |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3311 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3312 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3313 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3314 id = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3315 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
3316 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
|
3317 jabber_cmd_chat_kick, |
22619
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22459
diff
changeset
|
3318 _("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
|
3319 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3320 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3321 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3322 id = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL, |
15822 | 3323 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
|
3324 "prpl-jabber", jabber_cmd_chat_msg, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3325 _("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
|
3326 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3327 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3328 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3329 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
|
3330 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
|
3331 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
|
3332 "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
|
3333 _("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
|
3334 NULL); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3335 jabber_cmds = g_slist_prepend(jabber_cmds, GUINT_TO_POINTER(id)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3336 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3337 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
|
3338 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
|
3339 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, |
17888
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3340 "prpl-jabber", jabber_cmd_buzz, |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17887
diff
changeset
|
3341 _("buzz: Buzz a user to get their attention"), NULL); |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3342 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3343 |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3344 void jabber_unregister_commands(void) |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3345 { |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3346 while (jabber_cmds != NULL) { |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3347 purple_cmd_unregister(GPOINTER_TO_UINT(jabber_cmds->data)); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3348 jabber_cmds = g_slist_delete_link(jabber_cmds, jabber_cmds); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3349 } |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3350 } |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3351 |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3352 /* IPC functions */ |
25029
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25028
diff
changeset
|
3353 |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3354 /** |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3355 * 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
|
3356 * |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3357 * @param account The PurpleAccount |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3358 * @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
|
3359 * @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
|
3360 * |
25029
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25028
diff
changeset
|
3361 * @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
|
3362 */ |
25028
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3363 static gboolean |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3364 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
|
3365 const gchar *feature) |
25028
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3366 { |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3367 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
|
3368 JabberStream *js; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3369 JabberBuddy *jb; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3370 JabberBuddyResource *jbr; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3371 gchar *resource; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3372 |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3373 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
|
3374 return FALSE; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3375 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
|
3376 |
26932
a8537bbcfb79
Remove trailing whitespace that has snuck in.
Paul Aurich <paul@darkrain42.org>
parents:
26917
diff
changeset
|
3377 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
|
3378 !(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
|
3379 !(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
|
3380 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
|
3381 return FALSE; |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3382 } |
25151
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3383 |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3384 g_free(resource); |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3385 |
25175
b1b1b75a922e
Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents:
25167
diff
changeset
|
3386 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
|
3387 } |
45816181b7de
* fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25017
diff
changeset
|
3388 |
25030
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25029
diff
changeset
|
3389 static void |
25151
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3390 jabber_ipc_add_feature(const gchar *feature) |
25030
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25029
diff
changeset
|
3391 { |
25151
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3392 if (!feature) |
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3393 return; |
25031 | 3394 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
|
3395 |
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25146
diff
changeset
|
3396 /* 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
|
3397 jabber_caps_broadcast_change(); |
25030
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25029
diff
changeset
|
3398 } |
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25029
diff
changeset
|
3399 |
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
|
3400 void |
547c76fe2e7a
This does the ol' AIM/ICQ split trick on Jabber, creating an XMPP prpl. This can be used, later, to create a Bonjour plugin that reuses libjabber
Sean Egan <seanegan@gmail.com>
parents:
16068
diff
changeset
|
3401 jabber_init_plugin(PurplePlugin *plugin) |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3402 { |
26933
f500336f9881
Fix building on Windows and better integrate the new signals with the pre-existing ones.
Etan Reisner <pidgin@unreliablesource.net>
parents:
26932
diff
changeset
|
3403 jabber_plugin = plugin; |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3404 |
25164
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25151
diff
changeset
|
3405 jabber_add_identity("client", "pc", NULL, PACKAGE); |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3406 |
25028
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3407 /* initialize jabber_features list */ |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3408 jabber_add_feature("jabber:iq:last", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3409 jabber_add_feature("jabber:iq:oob", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3410 jabber_add_feature("jabber:iq:time", 0); |
25672
69495c6f12af
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents:
25671
diff
changeset
|
3411 jabber_add_feature("urn:xmpp:time", 0); |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3412 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
|
3413 jabber_add_feature("jabber:x:conference", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3414 jabber_add_feature("http://jabber.org/protocol/bytestreams", 0); |
25672
69495c6f12af
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents:
25671
diff
changeset
|
3415 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
|
3416 jabber_add_feature("http://jabber.org/protocol/chatstates", 0); |
25017
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3417 jabber_add_feature("http://jabber.org/protocol/disco#info", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3418 jabber_add_feature("http://jabber.org/protocol/disco#items", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3419 jabber_add_feature("http://jabber.org/protocol/ibb", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3420 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
|
3421 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
|
3422 jabber_add_feature("http://jabber.org/protocol/si", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3423 jabber_add_feature("http://jabber.org/protocol/si/profile/file-transfer", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3424 jabber_add_feature("http://jabber.org/protocol/xhtml-im", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23285
diff
changeset
|
3425 jabber_add_feature("urn:xmpp:ping", 0); |
26447
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26446
diff
changeset
|
3426 |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3427 /* Buzz/Attention */ |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3428 jabber_add_feature(XEP_0224_NAMESPACE, jabber_buzz_isenabled); |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3429 |
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3430 /* Bits Of Binary */ |
26874
eeee4309d3d8
Support custom smileys in MUCs (when all participants support BoB and a maximum
Marcus Lundblad <ml@update.uu.se>
parents:
26870
diff
changeset
|
3431 jabber_add_feature(XEP_0231_NAMESPACE, 0); |
26803
1dfa009f6db5
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
26802
diff
changeset
|
3432 |
26447
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26446
diff
changeset
|
3433 /* Jingle features! */ |
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26446
diff
changeset
|
3434 jabber_add_feature(JINGLE, 0); |
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26446
diff
changeset
|
3435 jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0); |
26454
9131368ba4be
Advertise ICEUDP only when libnice is available
Paul Aurich <paul@darkrain42.org>
parents:
26453
diff
changeset
|
3436 |
26453
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3437 #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
|
3438 jabber_add_feature("http://www.google.com/xmpp/protocol/session", 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
|
3439 jabber_add_feature("http://www.google.com/xmpp/protocol/voice/v1", 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
|
3440 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
|
3441 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled); |
26737
8b7d1aed6d59
merge of '8ddbfe5d6f5c2455497d11ccbfff769ed4e9fad4'
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
3442 jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0); |
26453
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26451
diff
changeset
|
3443 #endif |
26447
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26446
diff
changeset
|
3444 |
25028
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3445 /* IPC functions */ |
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3446 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
|
3447 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
|
3448 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
|
3449 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
|
3450 purple_value_new(PURPLE_TYPE_STRING), |
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25027
diff
changeset
|
3451 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
|
3452 |
25031 | 3453 purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature), |
3454 purple_marshal_VOID__POINTER, | |
3455 NULL, 1, | |
3456 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
|
3457 |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3458 /* Modifying these? Look at libxmpp.c:load_plugin for the signal versions */ |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3459 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
|
3460 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
|
3461 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
|
3462 NULL, 2, |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3463 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
|
3464 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
|
3465 |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3466 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
|
3467 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
|
3468 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
|
3469 NULL, 2, |
60cb86295f08
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <paul@darkrain42.org>
parents:
27002
diff
changeset
|
3470 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
|
3471 purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
15373
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3472 } |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
3473 |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
3474 void |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
3475 jabber_uninit_plugin(void) |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
3476 { |
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
|
3477 purple_plugin_ipc_unregister_all(jabber_plugin); |
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
|
3478 |
25167
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
3479 jabber_features_destroy(); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
3480 jabber_identities_destroy(); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25165
diff
changeset
|
3481 } |