Mercurial > pidgin.yaz
annotate libpurple/protocols/jabber/jabber.c @ 26842:f67f24008334
I was tired of most of us complaining about these things but never actually
doing anything aobut it, so I decided to borrow zac's work.
*** Plucked rev d4267261 (zacw@adiumx.com):
Remove jabber_message_conv_closed and its caller so that we no longer send the
"has left conversation" ("gone") notices.
author | John Bailey <rekkanoryo@rekkanoryo.org> |
---|---|
date | Thu, 30 Apr 2009 12:13:21 +0000 |
parents | 6faa5d5b4f44 |
children | 966d2f2f86c8 |
rev | line source |
---|---|
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1 /* |
15823 | 2 * purple - Jabber Protocol Plugin |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3 * |
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 |
19680
44b4e8bd759b
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19200
diff
changeset
|
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
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" |
15891
87ea711b9781
Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents:
15823
diff
changeset
|
28 #include "conversation.h" |
15374
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" |
25817
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24858
diff
changeset
|
31 #include "imgstore.h" |
15374
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" |
24820
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
35 #include "privacy.h" |
15374
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" |
25963
feea711ac242
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents:
25962
diff
changeset
|
40 #include "status.h" |
15374
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" |
15891
87ea711b9781
Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <stu@nosnilmot.com>
parents:
15823
diff
changeset
|
43 #include "xmlnode.h" |
15374
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" |
25987
c4fd9222dda1
propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
47 #include "caps.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
48 #include "chat.h" |
23445
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23182
diff
changeset
|
49 #include "data.h" |
15374
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" |
17562
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
59 #include "ping.h" |
15374
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" |
17561
a75079eae085
added preliminary frame for pep-support
Andreas Monitzer <pidgin@monitzer.com>
parents:
17560
diff
changeset
|
62 #include "pep.h" |
17610
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
63 #include "adhoccommands.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
64 |
26014
bd598b606ca4
Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25729
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:
25729
diff
changeset
|
66 #include "jingle/rtp.h" |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
67 |
17606
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17603
diff
changeset
|
68 #define JABBER_CONNECT_STEPS (js->gsc ? 9 : 5) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
69 |
15823 | 70 static PurplePlugin *my_protocol = NULL; |
21538 | 71 GList *jabber_features = NULL; |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
72 GList *jabber_identities = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
73 |
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
|
74 static void jabber_unregister_account_cb(JabberStream *js); |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
75 static void try_srv_connect(JabberStream *js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
76 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
77 static void jabber_stream_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
78 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
79 char *open_stream; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
80 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
81 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
|
82 "xmlns='jabber:client' " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
83 "xmlns:stream='http://etherx.jabber.org/streams' " |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
84 "version='1.0'>", |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
85 js->user->domain); |
26767
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26766
diff
changeset
|
86 if (js->reinit) |
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26766
diff
changeset
|
87 /* Close down the current stream to keep the XML parser happy */ |
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26766
diff
changeset
|
88 jabber_parser_close_stream(js); |
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26766
diff
changeset
|
89 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
90 /* setup the parser fresh for each stream */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
91 jabber_parser_setup(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
92 jabber_send_raw(js, open_stream, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
93 js->reinit = FALSE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
94 g_free(open_stream); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
95 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
96 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
97 static void |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
98 jabber_session_initialized_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
99 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
100 xmlnode *packet, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
101 { |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
102 if (type == JABBER_IQ_RESULT) { |
25826
af2b883df9a3
Wait until receiving the roster to tell the core we're logged in
Paul Aurich <paul@darkrain42.org>
parents:
25825
diff
changeset
|
103 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
|
104 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
|
105 jabber_unregister_account_cb(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
106 } else { |
21358 | 107 purple_connection_error_reason (js->gc, |
108 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
109 ("Error initializing session")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
110 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
111 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
112 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
113 static void jabber_session_init(JabberStream *js) |
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 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
|
116 xmlnode *session; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
117 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
118 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
|
119 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
120 session = xmlnode_new_child(iq->node, "session"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
121 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
|
122 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
123 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
124 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
125 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
126 static void jabber_bind_result_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
127 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
128 xmlnode *packet, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
129 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
130 xmlnode *bind; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
131 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
132 if (type == JABBER_IQ_RESULT && |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
133 (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
|
134 xmlnode *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
135 char *full_jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
136 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
|
137 JabberBuddy *my_jb = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
138 jabber_id_free(js->user); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
139 if(!(js->user = jabber_id_new(full_jid))) { |
21358 | 140 purple_connection_error_reason (js->gc, |
141 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
142 _("Invalid response from server.")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
143 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
144 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
|
145 my_jb->subscription |= JABBER_SUB_BOTH; |
24155
a61c017d3a99
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23988
diff
changeset
|
146 |
a61c017d3a99
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23988
diff
changeset
|
147 purple_connection_set_display_name(js->gc, full_jid); |
a61c017d3a99
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23988
diff
changeset
|
148 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
149 g_free(full_jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
150 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
151 } else { |
21358 | 152 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
|
153 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
|
154 purple_connection_error_reason (js->gc, reason, msg); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
155 g_free(msg); |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
158 jabber_session_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
159 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
160 |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
161 static char *jabber_prep_resource(char *input) { |
25097
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
162 char hostname[256], /* current hostname */ |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
163 *dot = NULL; |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
164 |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
165 /* Empty resource == don't send any */ |
24834
41e69c65b006
Slightly modified version of a fix fqueze proposed for a crash with the empty
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
24820
diff
changeset
|
166 if (input == NULL || *input == '\0') |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
167 return NULL; |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
168 |
24514
6b9552b09de0
Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
24508
diff
changeset
|
169 if (strstr(input, "__HOSTNAME__") == NULL) |
24531 | 170 return g_strdup(input); |
24514
6b9552b09de0
Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
24508
diff
changeset
|
171 |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
172 /* Replace __HOSTNAME__ with hostname */ |
24505
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
173 if (gethostname(hostname, sizeof(hostname) - 1)) { |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
174 purple_debug_warning("jabber", "gethostname: %s\n", g_strerror(errno)); |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
175 /* according to glibc doc, the only time an error is returned |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
176 is if the hostname is longer than the buffer, in which case |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
177 glibc 2.2+ would still fill the buffer with partial |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
178 hostname, so maybe we want to detect that and use it |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
179 instead |
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
180 */ |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
181 strcpy(hostname, "localhost"); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
182 } |
24505
9bb624e345aa
me likes this better, References #5565
Ka-Hing Cheung <khc@hxbc.us>
parents:
24501
diff
changeset
|
183 hostname[sizeof(hostname) - 1] = '\0'; |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
184 |
25097
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
185 /* We want only the short hostname, not the FQDN - this will prevent the |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
186 * resource string from being unreasonably long on systems which stuff the |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
187 * whole FQDN in the hostname */ |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
188 if((dot = strchr(hostname, '.'))) |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
189 dot = '\0'; |
43055addf135
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
mcepl@redhat.com
parents:
25066
diff
changeset
|
190 |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
191 return purple_strreplace(input, "__HOSTNAME__", hostname); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
192 } |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
193 |
25607
f775f6021654
* using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25602
diff
changeset
|
194 void jabber_stream_features_parse(JabberStream *js, xmlnode *packet) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
195 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
196 if(xmlnode_get_child(packet, "starttls")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
197 if(jabber_process_starttls(js, packet)) |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
198 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
199 return; |
26354
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
200 } else if(purple_account_get_bool(js->gc->account, "require_tls", FALSE) && !jabber_stream_is_ssl(js)) { |
21358 | 201 purple_connection_error_reason (js->gc, |
202 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
203 _("You require encryption, but it is not available on this server.")); |
17623
a8420fd18545
Added an option to require SSL or TLS when connecting to an XMPP server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17621
diff
changeset
|
204 return; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
205 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
206 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
207 if(js->registration) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
208 jabber_register_start(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
209 } else if(xmlnode_get_child(packet, "mechanisms")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
210 jabber_auth_start(js, packet); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
211 } else if(xmlnode_get_child(packet, "bind")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
212 xmlnode *bind, *resource; |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
213 char *requested_resource; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
214 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
|
215 bind = xmlnode_new_child(iq->node, "bind"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
216 xmlnode_set_namespace(bind, "urn:ietf:params:xml:ns:xmpp-bind"); |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
217 requested_resource = jabber_prep_resource(js->user->resource); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
218 |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
219 if (requested_resource != NULL) { |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
220 resource = xmlnode_new_child(bind, "resource"); |
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
221 xmlnode_insert_data(resource, requested_resource, -1); |
24614
641fe4c2b2a5
Use g_free instead of free.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24531
diff
changeset
|
222 g_free(requested_resource); |
24500
7ec139c84d36
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24409
diff
changeset
|
223 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
224 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
225 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
|
226 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
227 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
228 } 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
|
229 /* 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
|
230 * 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
|
231 * 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
|
232 * connecting to an XMPP server. */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
233 js->auth_type = JABBER_AUTH_IQ_AUTH; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
234 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
|
235 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
236 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
237 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
238 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
|
239 { |
21358 | 240 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
|
241 char *msg = jabber_parse_error(js, packet, &reason); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
242 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
243 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
|
244 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
245 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
246 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
247 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
248 static void tls_init(JabberStream *js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
249 |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
250 void jabber_process_packet(JabberStream *js, xmlnode **packet) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
251 { |
15919 | 252 const char *xmlns; |
253 | |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
254 purple_signal_emit(my_protocol, "jabber-receiving-xmlnode", js->gc, packet); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
255 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
256 /* if the signal leaves us with a null packet, we're done */ |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
257 if(NULL == *packet) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
258 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
259 |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
260 xmlns = xmlnode_get_namespace(*packet); |
15919 | 261 |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
262 if(!strcmp((*packet)->name, "iq")) { |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
263 jabber_iq_parse(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
264 } else if(!strcmp((*packet)->name, "presence")) { |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
265 jabber_presence_parse(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
266 } else if(!strcmp((*packet)->name, "message")) { |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
267 jabber_message_parse(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
268 } else if(!strcmp((*packet)->name, "stream:features")) { |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
269 jabber_stream_features_parse(js, *packet); |
21538 | 270 } else if (!strcmp((*packet)->name, "features") && xmlns && |
15919 | 271 !strcmp(xmlns, "http://etherx.jabber.org/streams")) { |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
272 jabber_stream_features_parse(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
273 } else if(!strcmp((*packet)->name, "stream:error") || |
21538 | 274 (!strcmp((*packet)->name, "error") && xmlns && |
15919 | 275 !strcmp(xmlns, "http://etherx.jabber.org/streams"))) |
276 { | |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
277 jabber_stream_handle_error(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
278 } else if(!strcmp((*packet)->name, "challenge")) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
279 if(js->state == JABBER_STREAM_AUTHENTICATING) |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
280 jabber_auth_handle_challenge(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
281 } else if(!strcmp((*packet)->name, "success")) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
282 if(js->state == JABBER_STREAM_AUTHENTICATING) |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
283 jabber_auth_handle_success(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
284 } else if(!strcmp((*packet)->name, "failure")) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
285 if(js->state == JABBER_STREAM_AUTHENTICATING) |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
286 jabber_auth_handle_failure(js, *packet); |
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
287 } else if(!strcmp((*packet)->name, "proceed")) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
288 if(js->state == JABBER_STREAM_AUTHENTICATING && !js->gsc) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
289 tls_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
290 } else { |
15823 | 291 purple_debug(PURPLE_DEBUG_WARNING, "jabber", "Unknown packet: %s\n", |
17621
bbd92ee894f2
Fixed a bug in the XMPP parser involving event handlers that replace the xmlnode packet. This caused double frees in this situation. The replacing function must free the xmlnode, since multiple event handlers could do this, and the intermediate xml trees would leak otherwise.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17620
diff
changeset
|
292 (*packet)->name); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
293 } |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
296 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
|
297 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
298 int ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
299 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
300 if (js->gsc) |
15823 | 301 ret = purple_ssl_write(js->gsc, data, len); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
302 else |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
303 ret = write(js->fd, data, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
304 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
305 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
306 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
307 |
15823 | 308 static void jabber_send_cb(gpointer data, gint source, PurpleInputCondition cond) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
309 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
310 JabberStream *js = data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
311 int ret, writelen; |
15823 | 312 writelen = purple_circ_buffer_get_max_read(js->write_buffer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
313 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
314 if (writelen == 0) { |
15823 | 315 purple_input_remove(js->writeh); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
316 js->writeh = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
317 return; |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
320 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
|
321 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
322 if (ret < 0 && errno == EAGAIN) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
323 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
324 else if (ret <= 0) { |
21358 | 325 purple_connection_error_reason (js->gc, |
326 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
327 _("Write error")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
328 return; |
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 |
15823 | 331 purple_circ_buffer_mark_read(js->write_buffer, ret); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
332 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
333 |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
334 static gboolean do_jabber_send_raw(JabberStream *js, const char *data, int len) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
335 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
336 int ret; |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
337 gboolean success = TRUE; |
15374
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 (len == -1) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
340 len = strlen(data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
341 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
342 if (js->writeh == 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
343 ret = jabber_do_send(js, data, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
344 else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
345 ret = -1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
346 errno = EAGAIN; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
347 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
348 |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
349 if (ret < 0 && errno != EAGAIN) { |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
350 purple_connection_error_reason (js->gc, |
21358 | 351 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
352 _("Write error")); |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
353 success = FALSE; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
354 } else if (ret < len) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
355 if (ret < 0) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
356 ret = 0; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
357 if (js->writeh == 0) |
15823 | 358 js->writeh = purple_input_add( |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
359 js->gsc ? js->gsc->fd : js->fd, |
15823 | 360 PURPLE_INPUT_WRITE, jabber_send_cb, js); |
361 purple_circ_buffer_append(js->write_buffer, | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
362 data + ret, len - ret); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
363 } |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
364 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
365 return success; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
366 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
367 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
368 void jabber_send_raw(JabberStream *js, const char *data, int len) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
369 { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
370 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
371 /* because printing a tab to debug every minute gets old */ |
24858
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
372 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:
24834
diff
changeset
|
373 char *text = NULL, *last_part = NULL, *tag_start = NULL; |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
374 |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
375 /* Because debug logs with plaintext passwords make me sad */ |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
376 if(js->state != JABBER_STREAM_CONNECTED && |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
377 /* Either <auth> or <query><password>... */ |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
378 (((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:
24834
diff
changeset
|
379 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:
24834
diff
changeset
|
380 ((tag_start = strstr(data, "<query ")) && |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
381 strstr(data, "xmlns='jabber:iq:auth'>") && |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
382 (tag_start = strstr(tag_start, "<password>"))))) { |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
383 char *data_start, *tag_end = strchr(tag_start, '>'); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
384 text = g_strdup(data); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
385 |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
386 data_start = text + (tag_end - data) + 1; |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
387 |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
388 last_part = strchr(data_start, '<'); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
389 *data_start = '\0'; |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
390 } |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
391 |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
392 purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s%s%s\n", |
26532
e344e2815454
Specify SSL properly in debug messages for BOSH sending debug output
Paul Aurich <paul@darkrain42.org>
parents:
26530
diff
changeset
|
393 jabber_stream_is_ssl(js) ? " (ssl)" : "", text ? text : data, |
24858
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
394 last_part ? "password removed" : "", |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
395 last_part ? last_part : ""); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
396 |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
397 g_free(text); |
3a4070656d61
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <paul@darkrain42.org>
parents:
24834
diff
changeset
|
398 } |
23378
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
399 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
400 /* If we've got a security layer, we need to encode the data, |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
401 * splitting it on the maximum buffer length negotiated */ |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
402 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
403 purple_signal_emit(my_protocol, "jabber-sending-text", js->gc, &data); |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
404 if (data == NULL) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
405 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
406 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
407 #ifdef HAVE_CYRUS_SASL |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
408 if (js->sasl_maxbuf>0) { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
409 int pos = 0; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
410 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
411 if (!js->gsc && js->fd<0) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
412 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
413 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
414 if (len == -1) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
415 len = strlen(data); |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
416 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
417 while (pos < len) { |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
418 int towrite; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
419 const char *out; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
420 unsigned olen; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
421 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
422 towrite = MIN((len - pos), js->sasl_maxbuf); |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
423 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
424 sasl_encode(js->sasl, &data[pos], towrite, &out, &olen); |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
425 pos += towrite; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
426 |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
427 if (!do_jabber_send_raw(js, out, olen)) |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
428 break; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
429 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
430 return; |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
431 } |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
432 #endif |
e12600d6b902
Cleanup some duplication and simplify this.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23287
diff
changeset
|
433 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
434 if (len == -1) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
435 len = strlen(data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
436 |
25777
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
437 if (js->use_bosh) |
26530
d4af753e0e33
Pass all messages to BOSH as text, so they pass through the sending-text
Paul Aurich <paul@darkrain42.org>
parents:
26529
diff
changeset
|
438 jabber_bosh_connection_send_raw(js->bosh, data); |
25777
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
439 else |
25717
907ca9a36fe0
explicit merge of '714a7c7f903d11c96ffade34966121da549d998f'
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
440 do_jabber_send_raw(js, data, len); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
441 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
442 |
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
|
443 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
444 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
445 JabberStream *js = (JabberStream*)gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
446 jabber_send_raw(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
447 return len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
448 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
449 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
450 void jabber_send(JabberStream *js, xmlnode *packet) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
451 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
452 char *txt; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
453 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
454 |
15823 | 455 purple_signal_emit(my_protocol, "jabber-sending-xmlnode", js->gc, &packet); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
456 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
457 /* if we get NULL back, we're done processing */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
458 if(NULL == packet) |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
461 txt = xmlnode_to_str(packet, &len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
462 jabber_send_raw(js, txt, len); |
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 |
25925
42dd7e591031
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents:
25050
diff
changeset
|
466 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
|
467 { |
21973
966f98d4b04b
Masca noticed that dc6923294f5f33ff7a52a998e1b9e9ad47be0211 made jabber.c not
Will Thompson <will.thompson@collabora.co.uk>
parents:
21964
diff
changeset
|
468 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
|
469 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
|
470 _("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
|
471 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
|
472 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
|
473 } |
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 |
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
|
475 void jabber_keepalive(PurpleConnection *gc) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
476 { |
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
|
477 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
|
478 |
22448
8ec6ac1b9e26
Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evan.s@dreskin.net>
parents:
22432
diff
changeset
|
479 if (js->keepalive_timeout == -1) { |
26649
d00a8111e479
Send XMPP keepalive pings to our server, not our bare JID.
Paul Aurich <paul@darkrain42.org>
parents:
26606
diff
changeset
|
480 jabber_ping_jid(js, js->user->domain); |
25925
42dd7e591031
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents:
25050
diff
changeset
|
481 js->keepalive_timeout = purple_timeout_add_seconds(120, |
42dd7e591031
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <paul@darkrain42.org>
parents:
25050
diff
changeset
|
482 (GSourceFunc)(jabber_keepalive_timeout), gc); |
22448
8ec6ac1b9e26
Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evan.s@dreskin.net>
parents:
22432
diff
changeset
|
483 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
484 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
485 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
486 static void |
15823 | 487 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc, |
488 PurpleInputCondition cond) | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
489 { |
15823 | 490 PurpleConnection *gc = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
491 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
492 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
493 static char buf[4096]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
494 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
495 /* TODO: It should be possible to make this check unnecessary */ |
15823 | 496 if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
497 purple_ssl_close(gsc); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
498 return; |
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 |
15823 | 501 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
|
502 gc->last_received = time(NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
503 buf[len] = '\0'; |
15823 | 504 purple_debug(PURPLE_DEBUG_INFO, "jabber", "Recv (ssl)(%d): %s\n", len, buf); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
505 jabber_parser_process(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
506 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
507 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
508 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
509 |
23398
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
510 if(len < 0 && errno == EAGAIN) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
511 return; |
23398
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
512 else { |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
513 if (len == 0) |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
514 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:
23391
diff
changeset
|
515 else |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
516 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
|
517 purple_connection_error_reason (js->gc, |
21358 | 518 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
519 _("Read Error")); |
23398
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
520 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
521 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
522 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
523 static void |
15823 | 524 jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
525 { |
15823 | 526 PurpleConnection *gc = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
527 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
528 int len; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
529 static char buf[4096]; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
530 |
15823 | 531 if(!PURPLE_CONNECTION_IS_VALID(gc)) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
532 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
533 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
534 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
|
535 gc->last_received = time(NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
536 #ifdef HAVE_CYRUS_SASL |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
537 if (js->sasl_maxbuf>0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
538 const char *out; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
539 unsigned int olen; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
540 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
|
541 if (olen>0) { |
15823 | 542 purple_debug(PURPLE_DEBUG_INFO, "jabber", "RecvSASL (%u): %s\n", olen, out); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
543 jabber_parser_process(js,out,olen); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
544 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
545 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
546 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
547 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
548 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
549 #endif |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
550 buf[len] = '\0'; |
15823 | 551 purple_debug(PURPLE_DEBUG_INFO, "jabber", "Recv (%d): %s\n", len, buf); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
552 jabber_parser_process(js, buf, len); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
553 if(js->reinit) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
554 jabber_stream_init(js); |
23398
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
555 } else if(len < 0 && errno == EAGAIN) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
556 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
557 } else { |
23398
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
558 if (len == 0) |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
559 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:
23391
diff
changeset
|
560 else |
47b709962aab
Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <mark@kingant.net>
parents:
23391
diff
changeset
|
561 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
|
562 purple_connection_error_reason (js->gc, |
21358 | 563 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
564 _("Read Error")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
565 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
566 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
567 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
568 static void |
15823 | 569 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc, |
570 PurpleInputCondition cond) | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
571 { |
15823 | 572 PurpleConnection *gc = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
573 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
574 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
575 /* TODO: It should be possible to make this check unnecessary */ |
15823 | 576 if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
577 purple_ssl_close(gsc); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
578 return; |
19999
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19722
diff
changeset
|
579 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
580 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
581 js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
582 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
583 if(js->state == JABBER_STREAM_CONNECTING) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
584 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
|
585 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
15823 | 586 purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
587 |
17606
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17603
diff
changeset
|
588 /* Tell the app that we're doing encryption */ |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17603
diff
changeset
|
589 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
590 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
591 |
25596
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
592 static void |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
593 txt_resolved_cb(GSList *responses, gpointer data) |
25596
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
594 { |
25776
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25775
diff
changeset
|
595 JabberStream *js = data; |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
596 |
25775
1516525c86fa
Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents:
25774
diff
changeset
|
597 js->srv_query_data = NULL; |
1516525c86fa
Track the TXT query in the js object so it will be cancelleable
Paul Aurich <paul@darkrain42.org>
parents:
25774
diff
changeset
|
598 |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
599 if (responses == NULL) { |
25596
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
600 gchar *tmp; |
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
601 tmp = g_strdup_printf(_("Could not find alternative XMPP connection methods after failing to connect directly.\n")); |
25776
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25775
diff
changeset
|
602 purple_connection_error_reason (js->gc, |
25596
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
603 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
25600
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25597
diff
changeset
|
604 g_free(tmp); |
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25597
diff
changeset
|
605 return; |
25596
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
606 } |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
607 |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
608 while (responses) { |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
609 PurpleTxtResponse *resp = responses->data; |
25597
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
610 gchar **token; |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
611 token = g_strsplit(purple_txt_response_get_content(resp), "=", 2); |
25597
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
612 if (!strcmp(token[0], "_xmpp-client-xbosh")) { |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
613 purple_debug_info("jabber","Found alternative connection method using %s at %s.\n", token[0], token[1]); |
25776
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25775
diff
changeset
|
614 js->bosh = jabber_bosh_connection_init(js, token[1]); |
25777
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
615 js->use_bosh = TRUE; |
25597
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
616 g_strfreev(token); |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
617 break; |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
618 } |
9f8951284a2e
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25596
diff
changeset
|
619 g_strfreev(token); |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
620 purple_txt_response_destroy(resp); |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
621 responses = g_slist_delete_link(responses, responses); |
25596
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
622 } |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
623 |
25776
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25775
diff
changeset
|
624 if (js->bosh) { |
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25775
diff
changeset
|
625 jabber_bosh_connection_connect(js->bosh); |
25600
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25597
diff
changeset
|
626 } else { |
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25597
diff
changeset
|
627 purple_debug_info("jabber","Didn't find an alternative connection method.\n"); |
1cbe5a9f6efb
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25597
diff
changeset
|
628 } |
26671
400f74b95c0e
First crack at Win32 TXT DNS query code and don't leak the PurpleTxtResponses
Paul Aurich <paul@darkrain42.org>
parents:
26670
diff
changeset
|
629 |
26672
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
630 if (responses) { |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
631 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:
26671
diff
changeset
|
632 g_slist_free(responses); |
acee7d2b1983
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <paul@darkrain42.org>
parents:
26671
diff
changeset
|
633 } |
25596
7768cad83127
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25593
diff
changeset
|
634 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
635 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
636 static void |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
637 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
|
638 { |
15823 | 639 PurpleConnection *gc = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
640 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
641 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
642 if (source < 0) { |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
643 if (js->srv_rec != NULL) { |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
644 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record.\n", error); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
645 try_srv_connect(js); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
646 } else { |
25716
ba362a67278c
propagate from branch 'im.pidgin.pidgin' (head 2747d5e0324ca6b81e83bbb8b75e1efebcbbad6e)
Tobias Markmann <tfar@soc.pidgin.im>
diff
changeset
|
647 purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain); |
25776
7de1f124f95a
Jabber BOSH: Many fixes
Paul Aurich <paul@darkrain42.org>
parents:
25775
diff
changeset
|
648 js->srv_query_data = purple_txt_resolve("_xmppconnect", js->user->domain, txt_resolved_cb, js); |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
649 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
650 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
651 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
652 |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
653 g_free(js->srv_rec); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
654 js->srv_rec = NULL; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
655 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
656 js->fd = source; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
657 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
658 if(js->state == JABBER_STREAM_CONNECTING) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
659 jabber_send_raw(js, "<?xml version='1.0' ?>", -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
660 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
661 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
15823 | 662 gc->inpa = purple_input_add(js->fd, PURPLE_INPUT_READ, jabber_recv_cb, gc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
663 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
664 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
665 static void |
15823 | 666 jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
667 gpointer data) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
668 { |
15823 | 669 PurpleConnection *gc = data; |
15607
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15498
diff
changeset
|
670 JabberStream *js; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
671 |
15607
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15498
diff
changeset
|
672 /* If the connection is already disconnected, we don't need to do anything else */ |
15823 | 673 if(!PURPLE_CONNECTION_IS_VALID(gc)) |
15607
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15498
diff
changeset
|
674 return; |
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15498
diff
changeset
|
675 |
66dc2367b137
If jabber_ssl_connect_failure() is called because a connect attempt fails, but the user has already canceled the attempt by signing the account offline, this would previously crash. It now does not.
Evan Schoenberg <evan.s@dreskin.net>
parents:
15498
diff
changeset
|
676 js = gc->proto_data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
677 js->gsc = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
678 |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
679 purple_connection_ssl_error (gc, error); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
680 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
681 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
682 static void tls_init(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
683 { |
26767
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26766
diff
changeset
|
684 /* Close down the current stream to keep the XML parser happy */ |
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26766
diff
changeset
|
685 jabber_parser_close_stream(js); |
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26766
diff
changeset
|
686 |
15823 | 687 purple_input_remove(js->gc->inpa); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
688 js->gc->inpa = 0; |
18929
67cb28c0ec89
applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18163
diff
changeset
|
689 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
|
690 jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
691 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
692 |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
693 static gboolean jabber_login_connect(JabberStream *js, const char *domain, const char *host, int port, |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
694 gboolean fatal_failure) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
695 { |
22327
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
696 /* 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
|
697 * 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
|
698 * 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
|
699 * in connect server */ |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
700 g_free(js->serverFQDN); |
22327
dc47e908965f
Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <stu@nosnilmot.com>
parents:
22149
diff
changeset
|
701 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
|
702 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
|
703 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
|
704 js->serverFQDN = g_strdup(host); |
15766
51dd9ae01585
pass the correct domain to cyrus sasl (sf patch 1663064)
Nathan Walp <nwalp@pidgin.im>
parents:
15729
diff
changeset
|
705 |
17007 | 706 if (purple_proxy_connect(js->gc, js->gc->account, host, |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
707 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:
23398
diff
changeset
|
708 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:
23398
diff
changeset
|
709 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:
23398
diff
changeset
|
710 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:
23398
diff
changeset
|
711 _("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:
23398
diff
changeset
|
712 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
713 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
714 return FALSE; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
715 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
716 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
717 return TRUE; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
718 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
719 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
720 static void try_srv_connect(JabberStream *js) |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
721 { |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
722 while (js->srv_rec != NULL && js->srv_rec_idx < js->max_srv_rec_idx) { |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
723 PurpleSrvResponse *tmp_resp = js->srv_rec + (js->srv_rec_idx++); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
724 if (jabber_login_connect(js, tmp_resp->hostname, tmp_resp->hostname, tmp_resp->port, FALSE)) |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
725 return; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
726 } |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
727 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
728 g_free(js->srv_rec); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
729 js->srv_rec = NULL; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
730 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
731 /* Fall back to the defaults (I'm not sure if we should actually do this) */ |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
732 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:
23398
diff
changeset
|
733 purple_account_get_int(js->gc->account, "port", 5222), TRUE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
734 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
735 |
15823 | 736 static void srv_resolved_cb(PurpleSrvResponse *resp, int results, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
737 { |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
738 JabberStream *js = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
739 js->srv_query_data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
740 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
741 if(results) { |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
742 js->srv_rec = resp; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
743 js->srv_rec_idx = 0; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
744 js->max_srv_rec_idx = results; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
745 try_srv_connect(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
746 } else { |
17007 | 747 jabber_login_connect(js, js->user->domain, js->user->domain, |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
748 purple_account_get_int(js->gc->account, "port", 5222), TRUE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
749 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
750 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
751 |
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
|
752 void |
15823 | 753 jabber_login(PurpleAccount *account) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
754 { |
15823 | 755 PurpleConnection *gc = purple_account_get_connection(account); |
756 const char *connect_server = purple_account_get_string(account, | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
757 "connect_server", ""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
758 JabberStream *js; |
25963
feea711ac242
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents:
25962
diff
changeset
|
759 PurplePresence *presence; |
25817
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24858
diff
changeset
|
760 PurpleStoredImage *image; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
761 JabberBuddy *my_jb = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
762 |
23445
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23182
diff
changeset
|
763 gc->flags |= PURPLE_CONNECTION_HTML | |
4ac5db6e39f3
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <ml@update.uu.se>
parents:
23182
diff
changeset
|
764 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
765 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
|
766 js->gc = gc; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
767 js->fd = -1; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
768 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
|
769 g_free, g_free); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
770 js->disco_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); |
15823 | 776 js->user = jabber_id_new(purple_account_get_username(account)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
777 js->next_id = g_random_int(); |
15823 | 778 js->write_buffer = purple_circ_buffer_new(512); |
26796
89a446de0d44
disapproval of revision '0a225b2db14919b2e455f6938d28c885d6ca74e4'
Paul Aurich <paul@darkrain42.org>
parents:
26792
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; |
25995
6d7d360687bd
Jabber: Default protocol version to 1.0.
Paul Aurich <paul@darkrain42.org>
parents:
25989
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:
25989
diff
changeset
|
782 js->protocol_version = JABBER_PROTO_1_0; |
25648
16543025aed1
Moved jingle.c global variable "sessions" into JabberStream.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25647
diff
changeset
|
783 js->sessions = NULL; |
26162
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
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:
26145
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:
26145
diff
changeset
|
786 js->stun_query = NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
787 |
25962
a92df60855f3
Set idle time on JabberStream when logging in
Marcus Lundblad <ml@update.uu.se>
parents:
25956
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:
25956
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:
25956
diff
changeset
|
790 sense to do this when registering a new account... */ |
25963
feea711ac242
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <ml@update.uu.se>
parents:
25962
diff
changeset
|
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:
25962
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:
25962
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:
25962
diff
changeset
|
794 |
15374
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")); |
15374
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 } |
26162
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
801 |
16963
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:
16962
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.")); |
16963
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:
16962
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:
16962
diff
changeset
|
807 } |
26162
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
808 |
25832
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25829
diff
changeset
|
809 /* |
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25829
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:
25829
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:
25829
diff
changeset
|
812 * server. |
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25829
diff
changeset
|
813 */ |
25817
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24858
diff
changeset
|
814 if ((image = purple_buddy_icons_find_account_icon(account))) { |
25832
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25829
diff
changeset
|
815 js->initial_avatar_hash = jabber_calculate_data_sha1sum(purple_imgstore_get_data(image), |
25817
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24858
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:
24858
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:
24858
diff
changeset
|
818 } |
9195955395b6
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <paul@darkrain42.org>
parents:
24858
diff
changeset
|
819 |
15823 | 820 if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE))) |
15374
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 |
25834
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25833
diff
changeset
|
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:
25833
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:
25833
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:
25833
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:
25833
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:
25833
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:
25833
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:
25833
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:
25833
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:
25833
diff
changeset
|
834 } |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25833
diff
changeset
|
835 jabber_bosh_connection_connect(js->bosh); |
25774
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25772
diff
changeset
|
836 return; |
25834
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25833
diff
changeset
|
837 } else { |
7d2e85f78aec
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <paul@darkrain42.org>
parents:
25833
diff
changeset
|
838 js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain); |
25774
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25772
diff
changeset
|
839 } |
514051f3b6cf
Add option for forcing BOSH (useful for debugging)
Paul Aurich <paul@darkrain42.org>
parents:
25772
diff
changeset
|
840 |
15374
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 */ |
15823 | 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, |
15823 | 846 purple_account_get_int(account, "port", 5223), jabber_login_callback_ssl, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
847 jabber_ssl_connect_failure, js->gc); |
25835
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25834
diff
changeset
|
848 if (!js->gsc) { |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25834
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:
25834
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:
25834
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:
25834
diff
changeset
|
852 } |
15374
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")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
857 } |
25835
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25834
diff
changeset
|
858 |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25834
diff
changeset
|
859 return; |
15374
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 */ |
25987
c4fd9222dda1
propagate from branch 'im.pidgin.pidgin' (head 303af74a38e7b313d4fb0be4d4054a16cb13d819)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
864 if(connect_server[0]) { |
25835
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25834
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:
25834
diff
changeset
|
866 } else { |
97a4d71e0c3d
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <paul@darkrain42.org>
parents:
25834
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:
25834
diff
changeset
|
868 "tcp", js->user->domain, srv_resolved_cb, js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
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; |
15823 | 877 PurpleAccount *account = purple_connection_get_account(js->gc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
878 |
17603
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17599
diff
changeset
|
879 jabber_parser_free(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
880 |
15823 | 881 purple_account_disconnect(account); |
15374
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 { |
15823 | 889 purple_timeout_add(0, conn_close_cb, js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
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 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
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:
26546
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:
26546
diff
changeset
|
895 xmlnode *packet, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
896 { |
17607
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17606
diff
changeset
|
897 PurpleAccount *account = purple_connection_get_account(js->gc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
898 char *buf; |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
899 char *to = data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
900 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
901 if (type == JABBER_IQ_RESULT) { |
17607
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17606
diff
changeset
|
902 if(js->registration) { |
15374
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); |
17608
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
905 if(account->registration_cb) |
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
906 (account->registration_cb)(account, TRUE, account->registration_cb_user_data); |
25101
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
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:
25097
diff
changeset
|
908 g_return_if_fail(to != NULL); |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
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:
17596
diff
changeset
|
910 to); |
25101
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
911 } |
15823 | 912 purple_notify_info(NULL, _("Registration Successful"), |
15374
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); |
15374
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 |
15823 | 921 purple_notify_error(NULL, _("Registration Failed"), |
15374
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); |
17608
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
924 if(account->registration_cb) |
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
925 (account->registration_cb)(account, FALSE, account->registration_cb_user_data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
926 } |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
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:
17596
diff
changeset
|
928 if(js->registration) |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
929 jabber_connection_schedule_close(js); |
15374
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 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
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:
26546
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:
26546
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; |
25101
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
939 |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
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:
25097
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:
25097
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:
25097
diff
changeset
|
943 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
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); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
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")); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
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 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
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:
17596
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:
17596
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:
17596
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:
17596
diff
changeset
|
967 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
968 static void |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
969 jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
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 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
976 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
977 query = xmlnode_get_child(iq->node, "query"); |
25101
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
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:
25097
diff
changeset
|
979 xmlnode_set_attrib(iq->node, "to", cbdata->who); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
980 |
15823 | 981 for(groups = purple_request_fields_get_groups(fields); groups; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
982 groups = groups->next) { |
15823 | 983 for(flds = purple_request_field_group_get_fields(groups->data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
984 flds; flds = flds->next) { |
15823 | 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"); |
25101
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
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:
25097
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"); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
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); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
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 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1005 } else { |
15823 | 1006 const char *value = purple_request_field_string_get_value(field); |
15374
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")) { |
25101
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
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); |
15374
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); |
15374
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 } |
19696
481749fc0b6b
merge of '1c7910841138381c841363256ca3c7905b1f26b0'
Daniel Atallah <daniel.atallah@gmail.com>
diff
changeset
|
1048 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1049 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
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:
17596
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:
17596
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:
17596
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); |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1055 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1056 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1057 jabber_iq_set_callback(iq, jabber_registration_result_cb, cbdata->who); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1058 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1059 jabber_iq_send(iq); |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1060 g_free(cbdata); |
15374
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 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1064 jabber_register_cancel_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1065 { |
17607
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17606
diff
changeset
|
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) { |
17607
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17606
diff
changeset
|
1068 if(account->registration_cb) |
17608
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
1069 (account->registration_cb)(account, FALSE, account->registration_cb_user_data); |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1070 jabber_connection_schedule_close(cbdata->js); |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1071 } |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
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:
17596
diff
changeset
|
1073 g_free(cbdata); |
15374
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; |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1080 char *to = data; |
15374
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"); |
25101
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
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:
25097
diff
changeset
|
1085 xmlnode_set_attrib(iq->node,"to",to); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
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 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1089 jabber_iq_set_callback(iq, jabber_registration_result_cb, to); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
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 |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25930
diff
changeset
|
1093 void jabber_register_parse(JabberStream *js, const char *from, JabberIqType type, |
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25930
diff
changeset
|
1094 const char *id, xmlnode *query) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1095 { |
17607
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17606
diff
changeset
|
1096 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
|
1097 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
|
1098 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
|
1099 PurpleRequestField *field; |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25930
diff
changeset
|
1100 xmlnode *x, *y; |
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
|
1101 char *instructions; |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1102 JabberRegisterCBData *cbdata; |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1103 gboolean registered = FALSE; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1104 |
25933
050052891c55
Pass IQ handlers type, from, id, and the child node
Paul Aurich <paul@darkrain42.org>
parents:
25930
diff
changeset
|
1105 if (type != JABBER_IQ_RESULT) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1106 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1107 |
21592
68b036c452f3
The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evan.s@dreskin.net>
parents:
21591
diff
changeset
|
1108 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
|
1109 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
|
1110 g_return_if_fail(from != NULL); |
25101
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
1111 |
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
|
1112 if(js->registration) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1113 /* get rid of the login thingy */ |
15823 | 1114 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
|
1115 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1116 |
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
|
1117 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
|
1118 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
|
1119 |
17607
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17606
diff
changeset
|
1120 if(js->registration) { |
15823 | 1121 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
|
1122 _("Already Registered"), NULL); |
17607
ca0b86f3dbd2
Implemented a callback for a successful registration, supplying the username and password to the application when available, in the way explained by Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17606
diff
changeset
|
1123 if(account->registration_cb) |
17608
a8b1159fd95b
Simplified registration callback per request of Sean.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17607
diff
changeset
|
1124 (account->registration_cb)(account, FALSE, account->registration_cb_user_data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1125 jabber_connection_schedule_close(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1126 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1127 } |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1128 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
1129 |
25066
256fbe98f6be
The jabber_register_parse function was looking for the <x> node as a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25050
diff
changeset
|
1130 if((x = xmlnode_get_child_with_namespace(query, "x", "jabber:x:data"))) { |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1131 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
|
1132 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
|
1133 |
25066
256fbe98f6be
The jabber_register_parse function was looking for the <x> node as a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25050
diff
changeset
|
1134 } 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
|
1135 xmlnode *url; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1136 |
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
|
1137 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
|
1138 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
|
1139 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
|
1140 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
|
1141 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
|
1142 |
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
|
1143 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
|
1144 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
|
1145 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
|
1146 (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
|
1147 jabber_connection_schedule_close(js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1148 } |
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
|
1149 return; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1150 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1151 } |
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
|
1152 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1153 |
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 /* as a last resort, use the old jabber:iq:register syntax */ |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
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 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
|
1157 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
|
1158 purple_request_fields_add_group(fields, group); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1159 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1160 if(js->registration) |
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
|
1161 field = purple_request_field_string_new("username", _("Username"), js->user->node, FALSE); |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1162 else |
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
|
1163 field = purple_request_field_string_new("username", _("Username"), NULL, FALSE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1164 |
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
|
1165 purple_request_field_group_add_field(group, field); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1166 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1167 if(js->registration) |
15823 | 1168 field = purple_request_field_string_new("password", _("Password"), |
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
|
1169 purple_connection_get_password(js->gc), FALSE); |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1170 else |
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 field = purple_request_field_string_new("password", _("Password"), NULL, FALSE); |
15374
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 purple_request_field_string_set_masked(field, 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
|
1174 purple_request_field_group_add_field(group, field); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1175 |
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
|
1176 if(xmlnode_get_child(query, "name")) { |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1177 if(js->registration) |
15823 | 1178 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
|
1179 purple_account_get_alias(js->gc->account), FALSE); |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1180 else |
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
|
1181 field = purple_request_field_string_new("name", _("Name"), NULL, FALSE); |
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
|
1182 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
|
1183 } |
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
|
1184 if(xmlnode_get_child(query, "email")) { |
23182
e0bcb8cfda74
Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@wiktel.com>
parents:
22933
diff
changeset
|
1185 field = purple_request_field_string_new("email", _("Email"), NULL, FALSE); |
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
|
1186 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
|
1187 } |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1188 if(xmlnode_get_child(query, "nick")) { |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1189 field = purple_request_field_string_new("nick", _("Nickname"), NULL, FALSE); |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1190 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
|
1191 } |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1192 if(xmlnode_get_child(query, "first")) { |
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
|
1193 field = purple_request_field_string_new("first", _("First name"), NULL, FALSE); |
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
|
1194 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
|
1195 } |
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
|
1196 if(xmlnode_get_child(query, "last")) { |
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
|
1197 field = purple_request_field_string_new("last", _("Last name"), NULL, FALSE); |
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
|
1198 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
|
1199 } |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1200 if(xmlnode_get_child(query, "address")) { |
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
|
1201 field = purple_request_field_string_new("address", _("Address"), NULL, FALSE); |
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
|
1202 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
|
1203 } |
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
|
1204 if(xmlnode_get_child(query, "city")) { |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1205 field = purple_request_field_string_new("city", _("City"), NULL, FALSE); |
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_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
|
1207 } |
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
|
1208 if(xmlnode_get_child(query, "state")) { |
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
|
1209 field = purple_request_field_string_new("state", _("State"), NULL, FALSE); |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1210 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
|
1211 } |
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 if(xmlnode_get_child(query, "zip")) { |
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 field = purple_request_field_string_new("zip", _("Postal code"), NULL, FALSE); |
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
|
1214 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
|
1215 } |
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
|
1216 if(xmlnode_get_child(query, "phone")) { |
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
|
1217 field = purple_request_field_string_new("phone", _("Phone"), NULL, FALSE); |
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
|
1218 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
|
1219 } |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1220 if(xmlnode_get_child(query, "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
|
1221 field = purple_request_field_string_new("url", _("URL"), NULL, FALSE); |
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
|
1222 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
|
1223 } |
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 if(xmlnode_get_child(query, "date")) { |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1225 field = purple_request_field_string_new("date", _("Date"), NULL, FALSE); |
6ba02326c9e1
Fixed whitespace and indentation in jabber_register_parse(). I'm seeing crashes while attempting to register, and it was difficult to follow the previous code with inconsistent and misleading indentation.
Evan Schoenberg <evan.s@dreskin.net>
parents:
21284
diff
changeset
|
1226 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
|
1227 } |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1228 if(registered) { |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1229 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
|
1230 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
|
1231 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1232 |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1233 if((y = xmlnode_get_child(query, "instructions"))) |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1234 instructions = xmlnode_get_data(y); |
18695
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1235 else if(registered) |
91eece1ad9bc
Added the ability to unregister from a gateway.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18684
diff
changeset
|
1236 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
|
1237 "to change your account registration.")); |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1238 else |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1239 instructions = g_strdup(_("Please fill out the information below " |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1240 "to register your new account.")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1241 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1242 cbdata = g_new0(JabberRegisterCBData, 1); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1243 cbdata->js = js; |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1244 cbdata->who = g_strdup(from); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1245 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1246 if(js->registration) |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1247 purple_request_fields(js->gc, _("Register New XMPP Account"), |
16915
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16822
diff
changeset
|
1248 _("Register New XMPP Account"), instructions, fields, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1249 _("Register"), G_CALLBACK(jabber_register_cb), |
16442
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16240
diff
changeset
|
1250 _("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
|
1251 purple_connection_get_account(js->gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1252 cbdata); |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1253 else { |
25101
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
1254 char *title; |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
1255 g_return_if_fail(from != NULL); |
b90c26f391b0
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <paul@darkrain42.org>
parents:
25097
diff
changeset
|
1256 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
|
1257 :g_strdup_printf(_("Register New Account at %s"), from); |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1258 purple_request_fields(js->gc, title, |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1259 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
|
1260 (registered ? _("Change Registration") : _("Register")), G_CALLBACK(jabber_register_cb), |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1261 _("Cancel"), G_CALLBACK(jabber_register_cancel_cb), |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1262 purple_connection_get_account(js->gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
1263 cbdata); |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1264 g_free(title); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1265 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1266 |
20276
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1267 g_free(instructions); |
c1d3d25e8c49
Merged xmpp leak fixes
Evan Schoenberg <evan.s@dreskin.net>
parents:
20187
diff
changeset
|
1268 } |
15374
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 void jabber_register_start(JabberStream *js) |
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 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1273 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1274 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
|
1275 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1276 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1277 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1278 void jabber_register_gateway(JabberStream *js, const char *gateway) { |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1279 JabberIq *iq; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
1280 |
17599
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1281 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register"); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1282 xmlnode_set_attrib(iq->node, "to", gateway); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1283 jabber_iq_send(iq); |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1284 } |
8c3fbc353a9c
Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17596
diff
changeset
|
1285 |
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
|
1286 void jabber_register_account(PurpleAccount *account) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1287 { |
15823 | 1288 PurpleConnection *gc = purple_account_get_connection(account); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1289 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1290 JabberBuddy *my_jb = NULL; |
15823 | 1291 const char *connect_server = purple_account_get_string(account, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1292 "connect_server", ""); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1293 const char *server; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1294 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1295 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
|
1296 js->gc = gc; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1297 js->registration = TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1298 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
|
1299 g_free, g_free); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1300 js->disco_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
|
1301 g_free, g_free); |
15823 | 1302 js->user = jabber_id_new(purple_account_get_username(account)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1303 js->next_id = g_random_int(); |
21978
cacc01b50a23
Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <stu@nosnilmot.com>
parents:
21973
diff
changeset
|
1304 js->old_length = 0; |
26841
6faa5d5b4f44
Don't breaking if the user runs `/ping <user's server>` a bunch.
Paul Aurich <paul@darkrain42.org>
parents:
26830
diff
changeset
|
1305 js->keepalive_timeout = -1; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1306 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1307 if(!js->user) { |
21358 | 1308 purple_connection_error_reason (gc, |
1309 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
1310 _("Invalid XMPP ID")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1311 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1312 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1313 |
15823 | 1314 js->write_buffer = purple_circ_buffer_new(512); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1315 |
15823 | 1316 if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE))) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1317 my_jb->subscription |= JABBER_SUB_BOTH; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1318 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1319 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
|
1320 js->certificate_CN = g_strdup(server); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1321 |
26162
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1322 js->stun_ip = NULL; |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1323 js->stun_port = 0; |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1324 js->stun_query = NULL; |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1325 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1326 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
|
1327 |
26674
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1328 /* TODO: Just use purple_url_parse? */ |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1329 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:
26672
diff
changeset
|
1330 js->use_bosh = TRUE; |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1331 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:
26672
diff
changeset
|
1332 if (!js->bosh) { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1333 purple_connection_error_reason (js->gc, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1334 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1335 _("Malformed BOSH Connect Server")); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1336 return; |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1337 } |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1338 jabber_bosh_connection_connect(js->bosh); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1339 return; |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1340 } else { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1341 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:
26672
diff
changeset
|
1342 } |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1343 |
15823 | 1344 if(purple_account_get_bool(account, "old_ssl", FALSE)) { |
1345 if(purple_ssl_is_supported()) { | |
1346 js->gsc = purple_ssl_connect(account, server, | |
1347 purple_account_get_int(account, "port", 5222), | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1348 jabber_login_callback_ssl, jabber_ssl_connect_failure, gc); |
26674
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1349 if (!js->gsc) { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1350 purple_connection_error_reason (js->gc, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1351 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1352 _("Unable to establish SSL connection")); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1353 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1354 } else { |
21358 | 1355 purple_connection_error_reason (gc, |
1356 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, | |
20117
f24a2cacacd1
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <will.thompson@collabora.co.uk>
parents:
20076
diff
changeset
|
1357 _("SSL support unavailable")); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1358 } |
26674
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1359 |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1360 return; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1361 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1362 |
26674
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1363 if (connect_server[0]) { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1364 jabber_login_connect(js, js->user->domain, server, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1365 purple_account_get_int(account, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1366 "port", 5222), TRUE); |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1367 } else { |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1368 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:
26672
diff
changeset
|
1369 "tcp", |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1370 js->user->domain, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1371 srv_resolved_cb, |
e9a8e363d957
Support BOSH when connecting via the register_account prpl.
Paul Aurich <paul@darkrain42.org>
parents:
26672
diff
changeset
|
1372 js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1373 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1374 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1375 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1376 static void |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1377 jabber_unregister_account_iq_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1378 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1379 xmlnode *packet, gpointer data) |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1380 { |
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
|
1381 PurpleAccount *account = purple_connection_get_account(js->gc); |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1382 |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1383 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
|
1384 char *msg = jabber_parse_error(js, packet, NULL); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
1385 |
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
|
1386 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
|
1387 _("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
|
1388 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
|
1389 if(js->unregistration_cb) |
18921
ba3b22cd280b
Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18920
diff
changeset
|
1390 js->unregistration_cb(account, FALSE, js->unregistration_user_data); |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1391 } 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
|
1392 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
|
1393 _("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
|
1394 if(js->unregistration_cb) |
18921
ba3b22cd280b
Mixed up TRUE and FALSE.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18920
diff
changeset
|
1395 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
|
1396 } |
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 } |
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
|
1398 |
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
|
1399 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
|
1400 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
|
1401 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
|
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 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
|
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 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
|
1406 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1407 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
|
1408 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1409 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
|
1410 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
|
1411 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1412 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
|
1413 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
|
1414 } |
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
|
1415 |
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
|
1416 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
|
1417 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
|
1418 JabberStream *js; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
1419 |
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
|
1420 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
|
1421 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
|
1422 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
|
1423 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
|
1424 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
|
1425 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
|
1426 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
|
1427 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
|
1428 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
1429 |
18703
033b128f7c21
Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <pidgin@monitzer.com>
parents:
18695
diff
changeset
|
1430 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
|
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 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
|
1433 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
|
1434 return; |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1435 } |
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 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
|
1438 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
|
1439 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
|
1440 |
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
|
1441 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
|
1442 } |
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
|
1443 |
26795
baa3867f2281
Don't call jabber_parser_close_stream in jabber_close, it papers over a real issue.
Paul Aurich <paul@darkrain42.org>
parents:
26793
diff
changeset
|
1444 /* 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:
26793
diff
changeset
|
1445 * 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:
26793
diff
changeset
|
1446 * 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:
26793
diff
changeset
|
1447 * 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:
26793
diff
changeset
|
1448 */ |
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
|
1449 void jabber_close(PurpleConnection *gc) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1450 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1451 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1452 |
25667
41d6d4217d21
Further decoupled Jingle code from jabber.c:
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25666
diff
changeset
|
1453 /* Close all of the open Jingle sessions on this stream */ |
26014
bd598b606ca4
Restructure Jingle code to more easily support multiple application types.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25729
diff
changeset
|
1454 jingle_terminate_sessions(js); |
25647
e1c8ec1259de
Updates voice and video to use Farsight 2, gets XMPP voice conferences
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25646
diff
changeset
|
1455 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1456 /* 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
|
1457 * 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
|
1458 * on some SSL backends. |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1459 */ |
25777
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1460 if (!gc->disconnect_timeout) { |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1461 if (js->use_bosh) |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1462 jabber_bosh_connection_close(js->bosh); |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1463 else |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1464 jabber_send_raw(js, "</stream:stream>", -1); |
26767
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26766
diff
changeset
|
1465 } |
90d5e3b94a37
Feed a fake </stream:stream> to the XMPP parser to silence warnings.
Paul Aurich <paul@darkrain42.org>
parents:
26766
diff
changeset
|
1466 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1467 if (js->srv_query_data) |
15823 | 1468 purple_srv_cancel(js->srv_query_data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1469 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1470 if(js->gsc) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1471 #ifdef HAVE_OPENSSL |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1472 if (!gc->disconnect_timeout) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1473 #endif |
15823 | 1474 purple_ssl_close(js->gsc); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1475 } else if (js->fd > 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1476 if(js->gc->inpa) |
15823 | 1477 purple_input_remove(js->gc->inpa); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1478 close(js->fd); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1479 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1480 |
25777
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1481 if (js->bosh) |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1482 jabber_bosh_connection_destroy(js->bosh); |
17b60b844803
Jabber BOSH: more fixes.
Paul Aurich <paul@darkrain42.org>
parents:
25776
diff
changeset
|
1483 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1484 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
|
1485 |
17603
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17599
diff
changeset
|
1486 jabber_parser_free(js); |
7a3a66c6530a
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17599
diff
changeset
|
1487 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1488 if(js->iq_callbacks) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1489 g_hash_table_destroy(js->iq_callbacks); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1490 if(js->disco_callbacks) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1491 g_hash_table_destroy(js->disco_callbacks); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1492 if(js->buddies) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1493 g_hash_table_destroy(js->buddies); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1494 if(js->chats) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1495 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
|
1496 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1497 while(js->chat_servers) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1498 g_free(js->chat_servers->data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1499 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
|
1500 } |
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
|
1501 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1502 while(js->user_directories) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1503 g_free(js->user_directories->data); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1504 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
|
1505 } |
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
|
1506 |
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 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
|
1508 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
|
1509 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
|
1510 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
|
1511 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
|
1512 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
|
1513 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
|
1514 } |
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 |
23744
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23644
diff
changeset
|
1516 while(js->url_datas) { |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23644
diff
changeset
|
1517 purple_util_fetch_url_cancel(js->url_datas->data); |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23644
diff
changeset
|
1518 js->url_datas = g_slist_delete_link(js->url_datas, js->url_datas); |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23644
diff
changeset
|
1519 } |
3c3032be12de
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23644
diff
changeset
|
1520 |
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 g_free(js->stream_id); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1522 if(js->user) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1523 jabber_id_free(js->user); |
25832
2d92bbe6807b
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <paul@darkrain42.org>
parents:
25829
diff
changeset
|
1524 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
|
1525 g_free(js->avatar_hash); |
25742
4040da08a733
Entity Capabilities must be per-JabberStream
Paul Aurich <paul@darkrain42.org>
parents:
25741
diff
changeset
|
1526 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
|
1527 |
15823 | 1528 purple_circ_buffer_destroy(js->write_buffer); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1529 if(js->writeh) |
15823 | 1530 purple_input_remove(js->writeh); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1531 #ifdef HAVE_CYRUS_SASL |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1532 if(js->sasl) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1533 sasl_dispose(&js->sasl); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1534 if(js->sasl_mechs) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1535 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
|
1536 g_free(js->sasl_cb); |
18929
67cb28c0ec89
applied changes from e52b685d84ca8874da6e3e71199829e513500642
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18163
diff
changeset
|
1537 #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
|
1538 g_free(js->serverFQDN); |
17610
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
1539 while(js->commands) { |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
1540 JabberAdHocCommands *cmd = js->commands->data; |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
1541 g_free(cmd->jid); |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
1542 g_free(cmd->node); |
17620
11dd7969dd4b
Fixed copy/paste error.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17617
diff
changeset
|
1543 g_free(cmd->name); |
17610
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
1544 g_free(cmd); |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
1545 js->commands = g_list_delete_link(js->commands, js->commands); |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
1546 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1547 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
|
1548 g_free(js->certificate_CN); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1549 g_free(js->gmail_last_time); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1550 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
|
1551 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
|
1552 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
|
1553 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
|
1554 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
|
1555 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
|
1556 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
|
1557 g_free(js->old_track); |
22933
9dc7e1d4da15
patch from Andrew Gaul to fix another memleak
Ka-Hing Cheung <khc@hxbc.us>
parents:
22602
diff
changeset
|
1558 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
|
1559 |
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
|
1560 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
|
1561 purple_timeout_remove(js->keepalive_timeout); |
23643
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
1562 |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
1563 g_free(js->srv_rec); |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
1564 js->srv_rec = NULL; |
224169be5830
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23398
diff
changeset
|
1565 |
26162
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1566 g_free(js->stun_ip); |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1567 js->stun_ip = NULL; |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1568 |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1569 /* cancel DNS query for STUN, if one is ongoing */ |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1570 if (js->stun_query) { |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1571 purple_dnsquery_destroy(js->stun_query); |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1572 js->stun_query = NULL; |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1573 } |
88f183f7dfc7
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <ml@update.uu.se>
parents:
26145
diff
changeset
|
1574 |
23644
fa8567fa0ca0
Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23643
diff
changeset
|
1575 g_free(js); |
fa8567fa0ca0
Fix a stupid mistake in the previous commit.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
23643
diff
changeset
|
1576 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1577 gc->proto_data = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1578 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1579 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1580 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
|
1581 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1582 js->state = state; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1583 switch(state) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1584 case JABBER_STREAM_OFFLINE: |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1585 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1586 case JABBER_STREAM_CONNECTING: |
15823 | 1587 purple_connection_update_progress(js->gc, _("Connecting"), 1, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1588 JABBER_CONNECT_STEPS); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1589 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1590 case JABBER_STREAM_INITIALIZING: |
15823 | 1591 purple_connection_update_progress(js->gc, _("Initializing Stream"), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1592 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1593 jabber_stream_init(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1594 break; |
17606
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17603
diff
changeset
|
1595 case JABBER_STREAM_INITIALIZING_ENCRYPTION: |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17603
diff
changeset
|
1596 purple_connection_update_progress(js->gc, _("Initializing SSL/TLS"), |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17603
diff
changeset
|
1597 6, JABBER_CONNECT_STEPS); |
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17603
diff
changeset
|
1598 break; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1599 case JABBER_STREAM_AUTHENTICATING: |
15823 | 1600 purple_connection_update_progress(js->gc, _("Authenticating"), |
17606
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17603
diff
changeset
|
1601 js->gsc ? 7 : 3, JABBER_CONNECT_STEPS); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1602 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
|
1603 jabber_register_start(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1604 } else if(js->auth_type == JABBER_AUTH_IQ_AUTH) { |
24772
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24614
diff
changeset
|
1605 /* 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:
24614
diff
changeset
|
1606 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:
24614
diff
changeset
|
1607 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:
24614
diff
changeset
|
1608 */ |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24614
diff
changeset
|
1609 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:
24614
diff
changeset
|
1610 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:
24614
diff
changeset
|
1611 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:
24614
diff
changeset
|
1612 } |
a0b89076a163
some server(s) don't like empty resource which we now default to. I am not
Ka-Hing Cheung <khc@hxbc.us>
parents:
24614
diff
changeset
|
1613 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1614 jabber_auth_start_old(js); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1615 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1616 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1617 case JABBER_STREAM_REINITIALIZING: |
15823 | 1618 purple_connection_update_progress(js->gc, _("Re-initializing Stream"), |
17606
108f3b42976f
Introduced an additional connection stage to the jabber connection progress in order to be able to tell in the application, whether SSL/TLS is enabled, so it can display a lock icon next to the connection.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17603
diff
changeset
|
1619 (js->gsc ? 8 : 4), JABBER_CONNECT_STEPS); |
16822
a77901ef0ebb
this should fix jabber buddy icons (but it will re-introduce the behavior of overwriting your vCard whenever you sign in).
Nathan Walp <nwalp@pidgin.im>
parents:
16728
diff
changeset
|
1620 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1621 /* 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
|
1622 js->reinit = TRUE; |
16822
a77901ef0ebb
this should fix jabber buddy icons (but it will re-introduce the behavior of overwriting your vCard whenever you sign in).
Nathan Walp <nwalp@pidgin.im>
parents:
16728
diff
changeset
|
1623 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1624 break; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1625 case JABBER_STREAM_CONNECTED: |
16822
a77901ef0ebb
this should fix jabber buddy icons (but it will re-introduce the behavior of overwriting your vCard whenever you sign in).
Nathan Walp <nwalp@pidgin.im>
parents:
16728
diff
changeset
|
1626 /* now we can alert the core that we're ready to send status */ |
15823 | 1627 purple_connection_set_state(js->gc, PURPLE_CONNECTED); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1628 break; |
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 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1632 char *jabber_get_next_id(JabberStream *js) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1633 { |
15823 | 1634 return g_strdup_printf("purple%x", js->next_id++); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1635 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1636 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1637 |
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
|
1638 void jabber_idle_set(PurpleConnection *gc, int idle) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1639 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1640 JabberStream *js = gc->proto_data; |
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 js->idle = idle ? time(NULL) - idle : idle; |
26787
fef989505ea2
propagate from branch 'im.pidgin.pidgin' (head 7281ad5ba8e68debd285e06dafebd991e980f3da)
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
1643 |
25791
e9b7e41dc816
A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <ml@update.uu.se>
parents:
24155
diff
changeset
|
1644 /* send out an updated prescence */ |
e9b7e41dc816
A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <ml@update.uu.se>
parents:
24155
diff
changeset
|
1645 purple_debug_info("jabber", "sending updated presence for idle\n"); |
26818 | 1646 jabber_presence_send(js, FALSE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1647 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1648 |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1649 static void jabber_blocklist_parse(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1650 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
1651 xmlnode *packet, gpointer data) |
24820
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1652 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1653 xmlnode *blocklist, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1654 PurpleAccount *account; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1655 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1656 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:
24772
diff
changeset
|
1657 "blocklist", "urn:xmpp:blocking"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1658 account = purple_connection_get_account(js->gc); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1659 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1660 if (blocklist == NULL) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1661 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1662 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1663 item = xmlnode_get_child(blocklist, "item"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1664 while (item != NULL) { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1665 const char *jid = xmlnode_get_attrib(item, "jid"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1666 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1667 purple_privacy_deny_add(account, jid, TRUE); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1668 item = xmlnode_get_next_twin(item); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1669 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1670 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1671 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1672 void jabber_request_block_list(JabberStream *js) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1673 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1674 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1675 xmlnode *blocklist; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1676 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1677 iq = jabber_iq_new(js, JABBER_IQ_GET); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1678 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1679 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:
24772
diff
changeset
|
1680 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:
24772
diff
changeset
|
1681 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1682 jabber_iq_set_callback(iq, jabber_blocklist_parse, NULL); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1683 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1684 jabber_iq_send(iq); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1685 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1686 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1687 void jabber_add_deny(PurpleConnection *gc, const char *who) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1688 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1689 JabberStream *js; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1690 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1691 xmlnode *block, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1692 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1693 js = gc->proto_data; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1694 if (js == NULL) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1695 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1696 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1697 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1698 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1699 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:
24772
diff
changeset
|
1700 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1701 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1702 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1703 if (!(js->server_caps & JABBER_CAP_BLOCKING)) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1704 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1705 purple_notify_error(NULL, _("Server doesn't support blocking"), |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1706 _("Server doesn't support blocking"), NULL); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1707 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1708 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1709 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1710 iq = jabber_iq_new(js, JABBER_IQ_SET); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1711 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1712 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:
24772
diff
changeset
|
1713 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:
24772
diff
changeset
|
1714 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1715 item = xmlnode_new_child(block, "item"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1716 xmlnode_set_attrib(item, "jid", who); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1717 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1718 jabber_iq_send(iq); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1719 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1720 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1721 void jabber_rem_deny(PurpleConnection *gc, const char *who) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1722 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1723 JabberStream *js; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1724 JabberIq *iq; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1725 xmlnode *unblock, *item; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1726 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1727 js = gc->proto_data; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1728 if (js == NULL) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1729 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1730 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1731 if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1732 { |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1733 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:
24772
diff
changeset
|
1734 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1735 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1736 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1737 if (!(js->server_caps & JABBER_CAP_BLOCKING)) |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1738 return; |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1739 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1740 iq = jabber_iq_new(js, JABBER_IQ_SET); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1741 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1742 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:
24772
diff
changeset
|
1743 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:
24772
diff
changeset
|
1744 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1745 item = xmlnode_new_child(unblock, "item"); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1746 xmlnode_set_attrib(item, "jid", who); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1747 |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1748 jabber_iq_send(iq); |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1749 } |
0700833f0c5d
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <mark@kingant.net>
parents:
24772
diff
changeset
|
1750 |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1751 void jabber_add_feature(const char *namespace, JabberFeatureEnabled cb) { |
17576
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17575
diff
changeset
|
1752 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
|
1753 |
ab38146f8f78
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19999
diff
changeset
|
1754 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
|
1755 |
17576
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17575
diff
changeset
|
1756 feat = g_new0(JabberFeature,1); |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1757 feat->namespace = g_strdup(namespace); |
17576
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17575
diff
changeset
|
1758 feat->is_enabled = cb; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
1759 |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1760 /* try to remove just in case it already exists in the list */ |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1761 jabber_remove_feature(namespace); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
1762 |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1763 jabber_features = g_list_append(jabber_features, feat); |
17563
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17562
diff
changeset
|
1764 } |
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17562
diff
changeset
|
1765 |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1766 void jabber_remove_feature(const char *namespace) { |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1767 GList *feature; |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1768 for(feature = jabber_features; feature; feature = feature->next) { |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1769 JabberFeature *feat = (JabberFeature*)feature->data; |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1770 if(!strcmp(feat->namespace, namespace)) { |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1771 g_free(feat->namespace); |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1772 g_free(feature->data); |
21538 | 1773 jabber_features = g_list_delete_link(jabber_features, feature); |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1774 break; |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1775 } |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
1776 } |
17563
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17562
diff
changeset
|
1777 } |
95affacf6f82
Added the ability to define extensions to caps
Andreas Monitzer <pidgin@monitzer.com>
parents:
17562
diff
changeset
|
1778 |
25763
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1779 static void jabber_features_destroy(void) |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1780 { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1781 while (jabber_features) { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1782 JabberFeature *feature = jabber_features->data; |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1783 g_free(feature->namespace); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1784 g_free(feature); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1785 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:
25761
diff
changeset
|
1786 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1787 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1788 |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
1789 void jabber_add_identity(const gchar *category, const gchar *type, const gchar *lang, const gchar *name) { |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1790 GList *identity; |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1791 JabberIdentity *ident; |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1792 /* both required according to XEP-0030 */ |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1793 g_return_if_fail(category != NULL); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1794 g_return_if_fail(type != NULL); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1795 |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1796 for(identity = jabber_identities; identity; identity = identity->next) { |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1797 JabberIdentity *ident = (JabberIdentity*)identity->data; |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
1798 if (!strcmp(ident->category, category) && |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
1799 !strcmp(ident->type, type) && |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
1800 ((!ident->lang && !lang) || (ident->lang && lang && !strcmp(ident->lang, lang)))) { |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
1801 return; |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1802 } |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1803 } |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
1804 |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1805 ident = g_new0(JabberIdentity, 1); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1806 ident->category = g_strdup(category); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1807 ident->type = g_strdup(type); |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
1808 ident->lang = g_strdup(lang); |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1809 ident->name = g_strdup(name); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1810 jabber_identities = g_list_append(jabber_identities, ident); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1811 } |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
1812 |
25763
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1813 static void jabber_identities_destroy(void) |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1814 { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1815 while (jabber_identities) { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1816 JabberIdentity *id = jabber_identities->data; |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1817 g_free(id->category); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1818 g_free(id->type); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1819 g_free(id->lang); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1820 g_free(id->name); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1821 g_free(id); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1822 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:
25761
diff
changeset
|
1823 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1824 } |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
1825 |
26354
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
1826 gboolean jabber_stream_is_ssl(JabberStream *js) |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
1827 { |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
1828 return (js->bosh && jabber_bosh_connection_is_ssl(js->bosh)) || |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
1829 (!js->bosh && js->gsc); |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
1830 } |
fcee93c74230
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <paul@darkrain42.org>
parents:
26352
diff
changeset
|
1831 |
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
|
1832 const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1833 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1834 return "jabber"; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1835 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1836 |
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
|
1837 const char* jabber_list_emblem(PurpleBuddy *b) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1838 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1839 JabberStream *js; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1840 JabberBuddy *jb = NULL; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1841 PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1842 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1843 if(!gc) |
15498
0d4890637238
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15463
diff
changeset
|
1844 return NULL; |
0d4890637238
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15463
diff
changeset
|
1845 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1846 js = gc->proto_data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1847 if(js) |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1848 jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1849 |
15823 | 1850 if(!PURPLE_BUDDY_IS_ONLINE(b)) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1851 if(jb && (jb->subscription & JABBER_SUB_PENDING || |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1852 !(jb->subscription & JABBER_SUB_TO))) |
15463 | 1853 return "not-authorized"; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1854 } |
15463 | 1855 return NULL; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1856 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1857 |
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
|
1858 char *jabber_status_text(PurpleBuddy *b) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1859 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1860 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
|
1861 JabberBuddy *jb = NULL; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1862 PurpleAccount *account = purple_buddy_get_account(b); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1863 PurpleConnection *gc = purple_account_get_connection(account); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1864 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1865 if (gc && gc->proto_data) |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1866 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1867 |
15823 | 1868 if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1869 ret = g_strdup(_("Not Authorized")); |
15823 | 1870 } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) { |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1871 ret = g_strdup(jb->error_msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1872 } else { |
26773
803e05b3a871
Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents:
26767
diff
changeset
|
1873 PurplePresence *presence = purple_buddy_get_presence(b); |
803e05b3a871
Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents:
26767
diff
changeset
|
1874 PurpleStatus *status =purple_presence_get_active_status(presence); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1875 char *stripped; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1876 |
26773
803e05b3a871
Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <paul@darkrain42.org>
parents:
26767
diff
changeset
|
1877 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
|
1878 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
|
1879 PurpleStatus *status = purple_presence_get_status(presence, "tune"); |
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
1880 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
|
1881 } |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1882 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1883 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1884 if(stripped) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1885 ret = g_markup_escape_text(stripped, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1886 g_free(stripped); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1887 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1888 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1889 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1890 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1891 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1892 |
25972
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1893 static void |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1894 jabber_tooltip_add_resource_text(JabberBuddyResource *jbr, |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1895 PurpleNotifyUserInfo *user_info, gboolean multiple_resources) |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1896 { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1897 char *text = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1898 char *res = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1899 char *label, *value; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1900 const char *state; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1901 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1902 if(jbr->status) { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1903 char *tmp; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1904 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:
25969
diff
changeset
|
1905 tmp = purple_markup_strip_html(text); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1906 g_free(text); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1907 text = g_markup_escape_text(tmp, -1); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1908 g_free(tmp); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1909 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1910 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1911 if(jbr->name) |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1912 res = g_strdup_printf(" (%s)", jbr->name); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1913 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1914 state = jabber_buddy_state_get_name(jbr->state); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1915 if (text != NULL && !purple_utf8_strcasecmp(state, text)) { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1916 g_free(text); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1917 text = NULL; |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1918 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1919 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1920 label = g_strdup_printf("%s%s", _("Status"), (res ? res : "")); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1921 value = g_strdup_printf("%s%s%s", state, (text ? ": " : ""), (text ? text : "")); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1922 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1923 purple_notify_user_info_add_pair(user_info, label, value); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1924 g_free(label); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1925 g_free(value); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1926 g_free(text); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1927 |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1928 /* if the resource is idle, show that */ |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1929 /* only show it if there is more than one resource available for |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1930 the buddy, since the "general" idleness will be shown anyway, |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1931 this way we can see see the idleness of lower-priority resources */ |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1932 if (jbr->idle && multiple_resources) { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1933 gchar *idle_str = |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1934 purple_str_seconds_to_string(time(NULL) - jbr->idle); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1935 label = g_strdup_printf("%s%s", _("Idle"), (res ? res : "")); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1936 purple_notify_user_info_add_pair(user_info, label, idle_str); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1937 g_free(idle_str); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1938 g_free(label); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1939 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1940 g_free(res); |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1941 } |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1942 |
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
|
1943 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1944 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1945 JabberBuddy *jb; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1946 PurpleAccount *account; |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1947 PurpleConnection *gc; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1948 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1949 g_return_if_fail(b != NULL); |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1950 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1951 account = purple_buddy_get_account(b); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1952 g_return_if_fail(account != NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1953 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1954 gc = purple_account_get_connection(account); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1955 g_return_if_fail(gc != NULL); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1956 g_return_if_fail(gc->proto_data != NULL); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1957 |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
1958 jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1959 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1960 if(jb) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1961 JabberBuddyResource *jbr = NULL; |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
1962 PurplePresence *presence = purple_buddy_get_presence(b); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1963 const char *sub; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1964 GList *l; |
19722
eedf2918aace
Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@gmail.com>
parents:
19696
diff
changeset
|
1965 const char *mood; |
25968
65f2c84f122f
Only show idle time for idle resources in tooltip text when there is more than
Marcus Lundblad <ml@update.uu.se>
parents:
25963
diff
changeset
|
1966 gboolean multiple_resources = |
65f2c84f122f
Only show idle time for idle resources in tooltip text when there is more than
Marcus Lundblad <ml@update.uu.se>
parents:
25963
diff
changeset
|
1967 jb->resources && g_list_next(jb->resources); |
25972
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1968 JabberBuddyResource *top_jbr = jabber_buddy_find_resource(jb, NULL); |
25974
8202f850ca9e
Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents:
25973
diff
changeset
|
1969 |
25972
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1970 /* resource-specific info for the top resource */ |
25975
1ad482221d70
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents:
25974
diff
changeset
|
1971 if (top_jbr) { |
1ad482221d70
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents:
25974
diff
changeset
|
1972 jabber_tooltip_add_resource_text(top_jbr, user_info, |
1ad482221d70
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents:
25974
diff
changeset
|
1973 multiple_resources); |
1ad482221d70
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <ml@update.uu.se>
parents:
25974
diff
changeset
|
1974 } |
25974
8202f850ca9e
Remove some unused variables
Marcus Lundblad <ml@update.uu.se>
parents:
25973
diff
changeset
|
1975 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1976 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
|
1977 jbr = l->data; |
25972
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1978 /* the remaining resources */ |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1979 if (jbr != top_jbr) { |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1980 jabber_tooltip_add_resource_text(jbr, user_info, |
e3f2b16f75da
Always show the top resource first in the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25969
diff
changeset
|
1981 multiple_resources); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1982 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1983 } |
25969
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
1984 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
1985 if (full) { |
17573
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17572
diff
changeset
|
1986 PurpleStatus *status; |
23271
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
1987 |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
1988 status = purple_presence_get_active_status(presence); |
23271
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
1989 mood = purple_status_get_attr_string(status, "mood"); |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
1990 if(mood != NULL) { |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
1991 const char *moodtext; |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
1992 moodtext = purple_status_get_attr_string(status, "moodtext"); |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
1993 if(moodtext != NULL) { |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
1994 char *moodplustext = g_strdup_printf("%s (%s)", mood, moodtext); |
e7b6767f263b
The status type says that mood and moodtext are strings, so we don't
Mark Doliner <mark@kingant.net>
parents:
23182
diff
changeset
|
1995 |
17573
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17572
diff
changeset
|
1996 purple_notify_user_info_add_pair(user_info, _("Mood"), moodplustext); |
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17572
diff
changeset
|
1997 g_free(moodplustext); |
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17572
diff
changeset
|
1998 } else |
2f067d8fb19a
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17572
diff
changeset
|
1999 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
|
2000 } |
22000
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2001 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
|
2002 PurpleStatus *tune = purple_presence_get_status(presence, "tune"); |
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2003 const char *title = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE); |
22000
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2004 const char *artist = purple_status_get_attr_string(tune, PURPLE_TUNE_ARTIST); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2005 const char *album = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2006 char *playing = purple_util_format_song_info(title, artist, album, NULL); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2007 if (playing) { |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2008 purple_notify_user_info_add_pair(user_info, _("Now Listening"), playing); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2009 g_free(playing); |
af0426c34c27
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
21978
diff
changeset
|
2010 } |
20571
c97e3ab9ef11
Music support for Google Talk
Sean Egan <seanegan@gmail.com>
parents:
20570
diff
changeset
|
2011 } |
25969
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2012 |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2013 if(jb->subscription & JABBER_SUB_FROM) { |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2014 if(jb->subscription & JABBER_SUB_TO) |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2015 sub = _("Both"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2016 else if(jb->subscription & JABBER_SUB_PENDING) |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2017 sub = _("From (To pending)"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2018 else |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2019 sub = _("From"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2020 } else { |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2021 if(jb->subscription & JABBER_SUB_TO) |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2022 sub = _("To"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2023 else if(jb->subscription & JABBER_SUB_PENDING) |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2024 sub = _("None (To pending)"); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2025 else |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2026 sub = _("None"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2027 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2028 |
25969
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2029 purple_notify_user_info_add_pair(user_info, _("Subscription"), sub); |
a8224eb86581
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <ml@update.uu.se>
parents:
25968
diff
changeset
|
2030 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2031 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2032 |
15823 | 2033 if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) { |
2034 purple_notify_user_info_add_pair(user_info, _("Error"), jb->error_msg); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2035 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2036 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2037 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2038 |
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
|
2039 GList *jabber_status_types(PurpleAccount *account) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2040 { |
15823 | 2041 PurpleStatusType *type; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2042 GList *types = NULL; |
15823 | 2043 PurpleValue *priority_value; |
24122
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
23988
diff
changeset
|
2044 PurpleValue *buzz_enabled; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2045 |
15823 | 2046 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2047 purple_value_set_int(priority_value, 1); | |
24122
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
23988
diff
changeset
|
2048 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
23988
diff
changeset
|
2049 purple_value_set_boolean(buzz_enabled, TRUE); |
15823 | 2050 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2051 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
|
2052 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2053 "priority", _("Priority"), priority_value, |
15823 | 2054 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2055 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2056 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17596
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17593
diff
changeset
|
2057 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
24122
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
23988
diff
changeset
|
2058 "buzz", _("Allow Buzz"), buzz_enabled, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2059 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2060 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2061 |
15823 | 2062 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2063 purple_value_set_int(priority_value, 1); | |
24707
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
24705
diff
changeset
|
2064 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
24705
diff
changeset
|
2065 purple_value_set_boolean(buzz_enabled, TRUE); |
15823 | 2066 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2067 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
|
2068 _("Chatty"), TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2069 "priority", _("Priority"), priority_value, |
15823 | 2070 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2071 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2072 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17596
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17593
diff
changeset
|
2073 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
24122
04d8a514d2bb
Updated support for XEP-0224.
Marcus Lundblad <ml@update.uu.se>
parents:
23988
diff
changeset
|
2074 "buzz", _("Allow Buzz"), buzz_enabled, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2075 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2076 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2077 |
15823 | 2078 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2079 purple_value_set_int(priority_value, 0); | |
24707
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
24705
diff
changeset
|
2080 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
24705
diff
changeset
|
2081 purple_value_set_boolean(buzz_enabled, TRUE); |
15823 | 2082 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2083 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
|
2084 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2085 "priority", _("Priority"), priority_value, |
15823 | 2086 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2087 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2088 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17596
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17593
diff
changeset
|
2089 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2090 "buzz", _("Allow Buzz"), buzz_enabled, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2091 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2092 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2093 |
15823 | 2094 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2095 purple_value_set_int(priority_value, 0); | |
24707
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
24705
diff
changeset
|
2096 buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
7b93616f7982
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <ml@update.uu.se>
parents:
24705
diff
changeset
|
2097 purple_value_set_boolean(buzz_enabled, TRUE); |
15823 | 2098 type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2099 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
|
2100 NULL, TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2101 "priority", _("Priority"), priority_value, |
15823 | 2102 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2103 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2104 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17596
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17593
diff
changeset
|
2105 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2106 "buzz", _("Allow Buzz"), buzz_enabled, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2107 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2108 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2109 |
15823 | 2110 priority_value = purple_value_new(PURPLE_TYPE_INT); |
2111 purple_value_set_int(priority_value, 0); | |
2112 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE, | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2113 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
|
2114 _("Do Not Disturb"), TRUE, TRUE, FALSE, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2115 "priority", _("Priority"), priority_value, |
15823 | 2116 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2117 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
2118 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING), |
17596
6842cc73b1b7
Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17593
diff
changeset
|
2119 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2120 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2121 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2122 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2123 /* |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2124 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
|
2125 m = g_list_append(m, _("Invisible")); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2126 */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2127 |
15823 | 2128 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2129 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_UNAVAILABLE), |
25050
b5c82724598c
For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
24858
diff
changeset
|
2130 NULL, TRUE, TRUE, FALSE, |
15823 | 2131 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2132 NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2133 types = g_list_append(types, type); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2134 |
20570
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2135 type = purple_status_type_new_with_attrs(PURPLE_STATUS_TUNE, |
24409
3a3d36791a47
I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@wiktel.com>
parents:
24155
diff
changeset
|
2136 "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
|
2137 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
|
2138 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
|
2139 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
|
2140 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
|
2141 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
|
2142 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
|
2143 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
|
2144 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
|
2145 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
|
2146 NULL); |
5913725cbcd6
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
20076
diff
changeset
|
2147 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
|
2148 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2149 return types; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2150 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2151 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2152 static void |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
2153 jabber_password_change_result_cb(JabberStream *js, const char *from, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
2154 JabberIqType type, const char *id, |
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
2155 xmlnode *packet, gpointer data) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2156 { |
26547
ae41d8e827e3
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <paul@darkrain42.org>
parents:
26546
diff
changeset
|
2157 if (type == JABBER_IQ_RESULT) { |
15823 | 2158 purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2159 _("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
|
2160 |
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2161 purple_account_set_password(js->gc->account, (char *)data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2162 } 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
|
2163 char *msg = jabber_parse_error(js, packet, NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2164 |
15823 | 2165 purple_notify_error(js->gc, _("Error changing password"), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2166 _("Error changing password"), msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2167 g_free(msg); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2168 } |
21058
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2169 |
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2170 g_free(data); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2171 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2172 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2173 static void jabber_password_change_cb(JabberStream *js, |
15823 | 2174 PurpleRequestFields *fields) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2175 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2176 const char *p1, *p2; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2177 JabberIq *iq; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2178 xmlnode *query, *y; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2179 |
15823 | 2180 p1 = purple_request_fields_get_string(fields, "password1"); |
2181 p2 = purple_request_fields_get_string(fields, "password2"); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2182 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2183 if(strcmp(p1, p2)) { |
15823 | 2184 purple_notify_error(js->gc, NULL, _("New passwords do not match."), NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2185 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2186 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2187 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2188 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
|
2189 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2190 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
|
2191 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2192 query = xmlnode_get_child(iq->node, "query"); |
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 y = xmlnode_new_child(query, "username"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2195 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
|
2196 y = xmlnode_new_child(query, "password"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2197 xmlnode_insert_data(y, p1, -1); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2198 |
21058
647b841ea945
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21000
diff
changeset
|
2199 jabber_iq_set_callback(iq, jabber_password_change_result_cb, g_strdup(p1)); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2200 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2201 jabber_iq_send(iq); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2202 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2203 |
15823 | 2204 static void jabber_password_change(PurplePluginAction *action) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2205 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2206 |
15823 | 2207 PurpleConnection *gc = (PurpleConnection *) action->context; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2208 JabberStream *js = gc->proto_data; |
15823 | 2209 PurpleRequestFields *fields; |
2210 PurpleRequestFieldGroup *group; | |
2211 PurpleRequestField *field; | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2212 |
15823 | 2213 fields = purple_request_fields_new(); |
2214 group = purple_request_field_group_new(NULL); | |
2215 purple_request_fields_add_group(fields, group); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2216 |
15823 | 2217 field = purple_request_field_string_new("password1", _("Password"), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2218 "", FALSE); |
15823 | 2219 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
|
2220 purple_request_field_set_required(field, TRUE); |
15823 | 2221 purple_request_field_group_add_field(group, field); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2222 |
15823 | 2223 field = purple_request_field_string_new("password2", _("Password (again)"), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2224 "", FALSE); |
15823 | 2225 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
|
2226 purple_request_field_set_required(field, TRUE); |
15823 | 2227 purple_request_field_group_add_field(group, field); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2228 |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2229 purple_request_fields(js->gc, _("Change XMPP Password"), |
16915
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16822
diff
changeset
|
2230 _("Change XMPP Password"), _("Please enter your new password"), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2231 fields, _("OK"), G_CALLBACK(jabber_password_change_cb), |
16442
08db93bbd798
Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evan.s@dreskin.net>
parents:
16240
diff
changeset
|
2232 _("Cancel"), NULL, |
19999
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19722
diff
changeset
|
2233 purple_connection_get_account(gc), NULL, NULL, |
21099
51cf02dbdb0e
disapproval of revision 'c484d979c4fda4433a9633ff8b69bd8a395c9479'
Richard Laager <rlaager@wiktel.com>
parents:
21095
diff
changeset
|
2234 js); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2235 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2236 |
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
|
2237 GList *jabber_actions(PurplePlugin *plugin, gpointer context) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2238 { |
17575
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17573
diff
changeset
|
2239 PurpleConnection *gc = (PurpleConnection *) context; |
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17573
diff
changeset
|
2240 JabberStream *js = gc->proto_data; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2241 GList *m = NULL; |
15823 | 2242 PurplePluginAction *act; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2243 |
15823 | 2244 act = purple_plugin_action_new(_("Set User Info..."), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2245 jabber_setup_set_info); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2246 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2247 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2248 /* if (js->protocol_options & CHANGE_PASSWORD) { */ |
15823 | 2249 act = purple_plugin_action_new(_("Change Password..."), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2250 jabber_password_change); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2251 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2252 /* } */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2253 |
15823 | 2254 act = purple_plugin_action_new(_("Search for Users..."), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2255 jabber_user_search_begin); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2256 m = g_list_append(m, act); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2257 |
17576
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17575
diff
changeset
|
2258 purple_debug_info("jabber", "jabber_actions: have pep: %s\n", js->pep?"YES":"NO"); |
e49b259fc7dd
PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <pidgin@monitzer.com>
parents:
17575
diff
changeset
|
2259 |
17575
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17573
diff
changeset
|
2260 if(js->pep) |
5fc8a8a25008
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <pidgin@monitzer.com>
parents:
17573
diff
changeset
|
2261 jabber_pep_init_actions(&m); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2262 |
17610
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
2263 if(js->commands) |
9a19c46adf66
The server's ad-hoc commands are now listed in the account's action menu. Note that this requires an additional field in the _PurplePluginAction struct. There's no other way, since there was no way to supply user_data, and dynamically created functions are not supported by C. This should be fine, since that struct is only malloced in purple_plugin_action_new, which is part of the core. Applications have to either pass the struct unmodified, or restore the user_data pointer if the action is recreated when necessary (as is the case in Adium).
Andreas Monitzer <pidgin@monitzer.com>
parents:
17608
diff
changeset
|
2264 jabber_adhoc_init_server_commands(js, &m); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2265 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2266 return m; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2267 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2268 |
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
|
2269 PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2270 { |
15823 | 2271 PurpleBlistNode *gnode, *cnode; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2272 JabberID *jid; |
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 if(!(jid = jabber_id_new(name))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2275 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2276 |
25289
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2277 for(gnode = purple_blist_get_root(); gnode; |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2278 gnode = purple_blist_node_get_sibling_next(gnode)) { |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2279 for(cnode = purple_blist_node_get_first_child(gnode); |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2280 cnode; |
aa876d48b5b2
Some more struct hiding.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
24294
diff
changeset
|
2281 cnode = purple_blist_node_get_sibling_next(cnode)) { |
15823 | 2282 PurpleChat *chat = (PurpleChat*)cnode; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2283 const char *room, *server; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2284 GHashTable *components; |
15823 | 2285 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode)) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2286 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2287 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2288 if (purple_chat_get_account(chat) != account) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2289 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2290 |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2291 components = purple_chat_get_components(chat); |
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2292 if(!(room = g_hash_table_lookup(components, "room"))) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2293 continue; |
24120
16734635febf
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
23988
diff
changeset
|
2294 if(!(server = g_hash_table_lookup(components, "server"))) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2295 continue; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2296 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2297 if(jid->node && jid->domain && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2298 !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
|
2299 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2300 return chat; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2301 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2302 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2303 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2304 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2305 return NULL; |
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 void jabber_convo_closed(PurpleConnection *gc, const char *who) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2309 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2310 JabberStream *js = gc->proto_data; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2311 JabberID *jid; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2312 JabberBuddy *jb; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2313 JabberBuddyResource *jbr; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2314 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2315 if(!(jid = jabber_id_new(who))) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2316 return; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2317 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2318 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
|
2319 (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
|
2320 if(jbr->thread_id) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2321 g_free(jbr->thread_id); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2322 jbr->thread_id = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2323 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2324 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2325 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2326 jabber_id_free(jid); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2327 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2328 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2329 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2330 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
|
2331 xmlnode *packet, |
21358 | 2332 PurpleConnectionError *reason) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2333 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2334 xmlnode *error; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2335 const char *code = NULL, *text = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2336 const char *xmlns = xmlnode_get_namespace(packet); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2337 char *cdata = NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2338 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2339 #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
|
2340 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
|
2341 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2342 if((error = xmlnode_get_child(packet, "error"))) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2343 cdata = xmlnode_get_data(error); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2344 code = xmlnode_get_attrib(error, "code"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2345 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2346 /* Stanza errors */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2347 if(xmlnode_get_child(error, "bad-request")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2348 text = _("Bad Request"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2349 } else if(xmlnode_get_child(error, "conflict")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2350 text = _("Conflict"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2351 } 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
|
2352 text = _("Feature Not Implemented"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2353 } else if(xmlnode_get_child(error, "forbidden")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2354 text = _("Forbidden"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2355 } else if(xmlnode_get_child(error, "gone")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2356 text = _("Gone"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2357 } 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
|
2358 text = _("Internal Server Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2359 } 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
|
2360 text = _("Item Not Found"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2361 } else if(xmlnode_get_child(error, "jid-malformed")) { |
16915
56042b2f8b64
s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@wiktel.com>
parents:
16822
diff
changeset
|
2362 text = _("Malformed XMPP ID"); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2363 } 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
|
2364 text = _("Not Acceptable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2365 } 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
|
2366 text = _("Not Allowed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2367 } 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
|
2368 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2369 } 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
|
2370 text = _("Payment Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2371 } 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
|
2372 text = _("Recipient Unavailable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2373 } else if(xmlnode_get_child(error, "redirect")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2374 /* XXX */ |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2375 } 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
|
2376 text = _("Registration Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2377 } 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
|
2378 text = _("Remote Server Not Found"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2379 } 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
|
2380 text = _("Remote Server Timeout"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2381 } 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
|
2382 text = _("Server Overloaded"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2383 } 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
|
2384 text = _("Service Unavailable"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2385 } 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
|
2386 text = _("Subscription Required"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2387 } 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
|
2388 text = _("Unexpected Request"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2389 } 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
|
2390 text = _("Unknown Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2391 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2392 } 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
|
2393 /* 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
|
2394 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2395 if(xmlnode_get_child(packet, "aborted")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2396 text = _("Authorization Aborted"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2397 } 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
|
2398 text = _("Incorrect encoding in authorization"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2399 } 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
|
2400 text = _("Invalid authzid"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2401 } 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
|
2402 text = _("Invalid Authorization Mechanism"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2403 } 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
|
2404 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2405 text = _("Authorization mechanism too weak"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2406 } 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
|
2407 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED); |
19999
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19722
diff
changeset
|
2408 /* Clear the pasword if it isn't being saved */ |
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19722
diff
changeset
|
2409 if (!purple_account_get_remember_password(js->gc->account)) |
da29f5c7dc1a
Clear the password when we get an auth. error and we're not saving passwords so that you don't need to go into the account settings to reset it. Fix #3083.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
19722
diff
changeset
|
2410 purple_account_set_password(js->gc->account, NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2411 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2412 } 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
|
2413 text = _("Temporary Authentication Failure"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2414 } 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
|
2415 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2416 text = _("Authentication Failure"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2417 } |
15918
4be5d38ee117
Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <mark@kingant.net>
parents:
15916
diff
changeset
|
2418 } 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
|
2419 (!strcmp(packet->name, "error") && xmlns && |
15919 | 2420 !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
|
2421 /* Most common reason as default: */ |
21358 | 2422 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2423 if(xmlnode_get_child(packet, "bad-format")) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2424 text = _("Bad Format"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2425 } 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
|
2426 text = _("Bad Namespace Prefix"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2427 } else if(xmlnode_get_child(packet, "conflict")) { |
21358 | 2428 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2429 text = _("Resource Conflict"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2430 } 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
|
2431 text = _("Connection Timeout"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2432 } 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
|
2433 text = _("Host Gone"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2434 } 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
|
2435 text = _("Host Unknown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2436 } 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
|
2437 text = _("Improper Addressing"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2438 } 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
|
2439 text = _("Internal Server Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2440 } 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
|
2441 text = _("Invalid ID"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2442 } 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
|
2443 text = _("Invalid Namespace"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2444 } 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
|
2445 text = _("Invalid XML"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2446 } 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
|
2447 text = _("Non-matching Hosts"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2448 } 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
|
2449 text = _("Not Authorized"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2450 } 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
|
2451 text = _("Policy Violation"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2452 } 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
|
2453 text = _("Remote Connection Failed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2454 } 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
|
2455 text = _("Resource Constraint"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2456 } 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
|
2457 text = _("Restricted XML"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2458 } 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
|
2459 text = _("See Other Host"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2460 } 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
|
2461 text = _("System Shutdown"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2462 } 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
|
2463 text = _("Undefined Condition"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2464 } 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
|
2465 text = _("Unsupported Encoding"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2466 } 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
|
2467 text = _("Unsupported Stanza Type"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2468 } 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
|
2469 text = _("Unsupported Version"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2470 } 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
|
2471 text = _("XML Not Well Formed"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2472 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2473 text = _("Stream Error"); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2474 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2475 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2476 |
20814
bde477ec6a71
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <will.thompson@collabora.co.uk>
parents:
20792
diff
changeset
|
2477 #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
|
2478 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2479 if(text || cdata) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2480 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
|
2481 code ? ": " : "", text ? text : cdata); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2482 g_free(cdata); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2483 return ret; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2484 } else { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2485 return NULL; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2486 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2487 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2488 |
15823 | 2489 static PurpleCmdRet jabber_cmd_chat_config(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2490 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
|
2491 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2492 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
|
2493 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2494 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
|
2495 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
|
2496 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2497 jabber_chat_request_room_configure(chat); |
15823 | 2498 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2499 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2500 |
15823 | 2501 static PurpleCmdRet jabber_cmd_chat_register(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2502 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
|
2503 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2504 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
|
2505 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2506 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
|
2507 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
|
2508 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2509 jabber_chat_register(chat); |
15823 | 2510 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2511 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2512 |
15823 | 2513 static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2514 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
|
2515 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2516 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
|
2517 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2518 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
|
2519 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
|
2520 |
26766
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2521 if (args && args[0] && *args[0]) |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2522 jabber_chat_change_topic(chat, args[0]); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2523 else { |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2524 const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv)); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2525 char *buf, *tmp, *tmp2; |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2526 |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2527 if (cur) { |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2528 tmp = g_markup_escape_text(cur, -1); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2529 tmp2 = purple_markup_linkify(tmp); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2530 buf = g_strdup_printf(_("current topic is: %s"), tmp2); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2531 g_free(tmp); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2532 g_free(tmp2); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2533 } else |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2534 buf = g_strdup(_("No topic is set")); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2535 purple_conv_chat_write(PURPLE_CONV_CHAT(conv), "", buf, |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2536 PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL)); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2537 g_free(buf); |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2538 } |
06da00c70eae
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <paul@darkrain42.org>
parents:
26649
diff
changeset
|
2539 |
15823 | 2540 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2541 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2542 |
15823 | 2543 static PurpleCmdRet jabber_cmd_chat_nick(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2544 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
|
2545 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2546 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
|
2547 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2548 if(!chat || !args || !args[0]) |
15823 | 2549 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2550 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2551 jabber_chat_change_nick(chat, args[0]); |
15823 | 2552 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2553 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2554 |
15823 | 2555 static PurpleCmdRet jabber_cmd_chat_part(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2556 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
|
2557 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2558 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
|
2559 |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2560 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
|
2561 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
|
2562 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2563 jabber_chat_part(chat, args ? args[0] : NULL); |
15823 | 2564 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2565 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2566 |
15823 | 2567 static PurpleCmdRet jabber_cmd_chat_ban(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2568 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
|
2569 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2570 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
|
2571 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2572 if(!chat || !args || !args[0]) |
15823 | 2573 return PURPLE_CMD_RET_FAILED; |
15374
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 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
|
2576 *error = g_strdup_printf(_("Unable to ban user %s"), args[0]); |
15823 | 2577 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2578 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2579 |
15823 | 2580 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2581 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2582 |
15823 | 2583 static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2584 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
|
2585 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2586 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
|
2587 |
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 if (!chat || !args || !args[0] || !args[1]) |
15823 | 2589 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2590 |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2591 if (strcmp(args[1], "owner") != 0 && |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2592 strcmp(args[1], "admin") != 0 && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2593 strcmp(args[1], "member") != 0 && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2594 strcmp(args[1], "outcast") != 0 && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2595 strcmp(args[1], "none") != 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2596 *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[1]); |
15823 | 2597 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2598 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2599 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2600 if (!jabber_chat_affiliate_user(chat, args[0], args[1])) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2601 *error = g_strdup_printf(_("Unable to affiliate user %s as \"%s\""), args[0], args[1]); |
15823 | 2602 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2603 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2604 |
15823 | 2605 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2606 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2607 |
15823 | 2608 static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2609 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
|
2610 { |
18855
28a7c9dbbc2b
Fix uninitialized variable access.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
18711
diff
changeset
|
2611 JabberChat *chat = jabber_chat_find_by_conv(conv); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2612 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2613 if (!chat || !args || !args[0] || !args[1]) |
15823 | 2614 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2615 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2616 if (strcmp(args[1], "moderator") != 0 && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2617 strcmp(args[1], "participant") != 0 && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2618 strcmp(args[1], "visitor") != 0 && |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2619 strcmp(args[1], "none") != 0) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2620 *error = g_strdup_printf(_("Unknown role: \"%s\""), args[1]); |
15823 | 2621 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2622 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2623 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2624 if (!jabber_chat_role_user(chat, args[0], args[1])) { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2625 *error = g_strdup_printf(_("Unable to set role \"%s\" for user: %s"), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2626 args[1], args[0]); |
15823 | 2627 return PURPLE_CMD_RET_FAILED; |
15374
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 |
15823 | 2630 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2631 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2632 |
15823 | 2633 static PurpleCmdRet jabber_cmd_chat_invite(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2634 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
|
2635 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2636 if(!args || !args[0]) |
15823 | 2637 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2638 |
15823 | 2639 jabber_chat_invite(purple_conversation_get_gc(conv), |
2640 purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), args[1] ? args[1] : "", | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2641 args[0]); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2642 |
15823 | 2643 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2644 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2645 |
15823 | 2646 static PurpleCmdRet jabber_cmd_chat_join(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2647 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
|
2648 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2649 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
|
2650 GHashTable *components; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2651 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2652 if(!chat || !args || !args[0]) |
15823 | 2653 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2654 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2655 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
|
2656 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2657 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
|
2658 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
|
2659 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
|
2660 if(args[1]) |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2661 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
|
2662 |
15823 | 2663 jabber_chat_join(purple_conversation_get_gc(conv), components); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2664 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2665 g_hash_table_destroy(components); |
15823 | 2666 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2667 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2668 |
15823 | 2669 static PurpleCmdRet jabber_cmd_chat_kick(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2670 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
|
2671 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2672 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
|
2673 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2674 if(!chat || !args || !args[0]) |
15823 | 2675 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2676 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2677 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
|
2678 *error = g_strdup_printf(_("Unable to kick user %s"), args[0]); |
15823 | 2679 return PURPLE_CMD_RET_FAILED; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2680 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2681 |
15823 | 2682 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2683 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2684 |
15823 | 2685 static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv, |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2686 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
|
2687 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2688 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
|
2689 char *who; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2690 |
18711
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2691 if (!chat) |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2692 return PURPLE_CMD_RET_FAILED; |
259f8635eeff
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <mark@kingant.net>
parents:
18323
diff
changeset
|
2693 |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2694 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
|
2695 |
15823 | 2696 jabber_message_send_im(purple_conversation_get_gc(conv), who, args[1], 0); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2697 |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2698 g_free(who); |
15823 | 2699 return PURPLE_CMD_RET_OK; |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2700 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2701 |
17562
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2702 static PurpleCmdRet jabber_cmd_ping(PurpleConversation *conv, |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2703 const char *cmd, char **args, char **error, void *data) |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2704 { |
25984
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
2705 PurpleAccount *account; |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
2706 PurpleConnection *pc; |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
2707 |
17562
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2708 if(!args || !args[0]) |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2709 return PURPLE_CMD_RET_FAILED; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2710 |
25984
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
2711 account = purple_conversation_get_account(conv); |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
2712 pc = purple_account_get_connection(account); |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
2713 |
d24b476cc60f
Fix merge (i.e. reapply my changes here).
Paul Aurich <paul@darkrain42.org>
parents:
25983
diff
changeset
|
2714 if(!jabber_ping_jid(purple_connection_get_protocol_data(pc), args[0])) { |
17562
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2715 *error = g_strdup_printf(_("Unable to ping user %s"), args[0]); |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2716 return PURPLE_CMD_RET_FAILED; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2717 } |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2718 |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2719 return PURPLE_CMD_RET_OK; |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2720 } |
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
2721 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2722 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
|
2723 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2724 JabberBuddy *jb; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2725 JabberBuddyResource *jbr; |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2726 PurpleConnection *gc = js->gc; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2727 PurpleBuddy *buddy = |
25199
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25197
diff
changeset
|
2728 purple_find_buddy(purple_connection_get_account(gc), username); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2729 const gchar *alias = |
25199
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25197
diff
changeset
|
2730 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
|
2731 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2732 if(!username) |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2733 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2734 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2735 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
|
2736 if(!jb) { |
25199
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25197
diff
changeset
|
2737 *error = g_strdup_printf(_("Unable to buzz, because there is nothing " |
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25197
diff
changeset
|
2738 "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
|
2739 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2740 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2741 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2742 jbr = jabber_buddy_find_resource(jb, NULL); |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2743 if (!jbr) { |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2744 *error = g_strdup_printf(_("Unable to buzz, because %s might be offline."), |
25199
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25197
diff
changeset
|
2745 alias); |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2746 return FALSE; |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2747 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2748 |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2749 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:
24123
diff
changeset
|
2750 xmlnode *buzz, *msg = xmlnode_new("message"); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2751 gchar *to; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2752 |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2753 to = g_strdup_printf("%s/%s", username, jbr->name); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2754 xmlnode_set_attrib(msg, "to", to); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2755 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
|
2756 |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2757 /* avoid offline storage */ |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2758 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
|
2759 |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2760 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:
24123
diff
changeset
|
2761 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
|
2762 |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2763 jabber_send(js, msg); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2764 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
|
2765 |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2766 return TRUE; |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2767 } else { |
25199
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25197
diff
changeset
|
2768 *error = g_strdup_printf(_("Unable to buzz, because %s does " |
25985
7ace7bf0bfad
Use "does" here sounds more natural to me
Mark Doliner <mark@kingant.net>
parents:
25443
diff
changeset
|
2769 "not support it or does not wish to receive buzzes now."), alias); |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2770 return FALSE; |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2771 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2772 } |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2773 |
17615
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
2774 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv, |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
2775 const char *cmd, char **args, char **error, void *data) |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
2776 { |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
2777 JabberStream *js = conv->account->gc->proto_data; |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2778 const gchar *who; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2779 |
24153
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2780 if (!args || !args[0]) { |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2781 /* use the buddy from conversation, if it's a one-to-one conversation */ |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2782 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2783 who = purple_conversation_get_name(conv); |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2784 } else { |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2785 return PURPLE_CMD_RET_FAILED; |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2786 } |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2787 } else { |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2788 who = args[0]; |
a64d90cff01f
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <ml@update.uu.se>
parents:
24123
diff
changeset
|
2789 } |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2790 |
25197
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2791 if (_jabber_send_buzz(js, who, error)) { |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2792 const gchar *alias; |
25199
3f4bedafc86e
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <ml@update.uu.se>
parents:
25197
diff
changeset
|
2793 gchar *str; |
25197
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2794 PurpleBuddy *buddy = |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2795 purple_find_buddy(purple_connection_get_account(conv->account->gc), |
25197
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2796 who); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2797 |
25197
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2798 if (buddy != NULL) |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2799 alias = purple_buddy_get_contact_alias(buddy); |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2800 else |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2801 alias = who; |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2802 |
25197
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2803 str = g_strdup_printf(_("Buzzing %s..."), alias); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2804 purple_conversation_write(conv, NULL, str, |
25197
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2805 PURPLE_MESSAGE_SYSTEM|PURPLE_MESSAGE_NOTIFY, time(NULL)); |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2806 g_free(str); |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
2807 |
25197
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2808 return PURPLE_CMD_RET_OK; |
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2809 } else { |
17615
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
2810 return PURPLE_CMD_RET_FAILED; |
25197
8dee1fb9d8e9
Print to conversation from jabber_cmd_buzz, this prevents printing two info
Marcus Lundblad <ml@update.uu.se>
parents:
25196
diff
changeset
|
2811 } |
17615
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
2812 } |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
2813 |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2814 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
|
2815 { |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2816 static GList *types = NULL; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2817 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2818 if (!types) { |
22097
eab7d03edfcb
This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22034
diff
changeset
|
2819 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
|
2820 _("%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
|
2821 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2822 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2823 return types; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2824 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2825 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2826 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
|
2827 { |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2828 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
|
2829 gchar *error = NULL; |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2830 |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2831 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
|
2832 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
|
2833 g_free(error); |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2834 return FALSE; |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2835 } |
20852
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2836 |
6cc03752fe59
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <daniel.atallah@gmail.com>
parents:
20851
diff
changeset
|
2837 return TRUE; |
20149
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2838 } |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2839 |
be2538a92099
Comment a partial implementation of the libpurple attention API for
Jeffrey Connelly <jaconnel@calpoly.edu>
parents:
20076
diff
changeset
|
2840 |
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
|
2841 gboolean jabber_offline_message(const PurpleBuddy *buddy) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2842 { |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2843 return TRUE; |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
2844 } |
25637
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
2845 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2846 #ifdef USE_VV |
26539
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26536
diff
changeset
|
2847 gboolean |
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26536
diff
changeset
|
2848 jabber_audio_enabled(JabberStream *js, const char *namespace) |
26535
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2849 { |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2850 PurpleMediaManager *manager = purple_media_manager_get(); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2851 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2852 |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2853 return (caps & (PURPLE_MEDIA_CAPS_AUDIO | PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION)); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2854 } |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2855 |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2856 static gboolean |
26539
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26536
diff
changeset
|
2857 jabber_video_enabled(JabberStream *js, const char *namespace) |
26535
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2858 { |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2859 PurpleMediaManager *manager = purple_media_manager_get(); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2860 PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2861 |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2862 return (caps & (PURPLE_MEDIA_CAPS_VIDEO | PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION)); |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2863 } |
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
2864 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2865 typedef struct { |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2866 PurpleAccount *account; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2867 gchar *who; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2868 PurpleMediaSessionType type; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2869 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2870 } JabberMediaRequest; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2871 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2872 static void |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2873 jabber_media_cancel_cb(JabberMediaRequest *request, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2874 PurpleRequestFields *fields) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2875 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2876 g_free(request->who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2877 g_free(request); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2878 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2879 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2880 static void |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2881 jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestFields *fields) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2882 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2883 PurpleRequestField *field = |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2884 purple_request_fields_get_field(fields, "resource"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2885 int selected_id = purple_request_field_choice_get_value(field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2886 GList *labels = purple_request_field_choice_get_labels(field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2887 gchar *who = g_strdup_printf("%s/%s", request->who, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2888 (gchar*)g_list_nth_data(labels, selected_id)); |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2889 jabber_initiate_media(request->account, who, request->type); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2890 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2891 g_free(who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2892 g_free(request->who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2893 g_free(request); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2894 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2895 #endif |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2896 |
26447
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26417
diff
changeset
|
2897 gboolean |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2898 jabber_initiate_media(PurpleAccount *account, const char *who, |
25720
551a462b346a
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25718
diff
changeset
|
2899 PurpleMediaSessionType type) |
25637
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
2900 { |
26416
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26361
diff
changeset
|
2901 #ifdef USE_VV |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2902 JabberStream *js = (JabberStream *) |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2903 purple_account_get_connection(account)->proto_data; |
26081
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
2904 JabberBuddy *jb; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2905 JabberBuddyResource *jbr = NULL; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2906 char *resource; |
26081
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
2907 |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
2908 if (!js) { |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
2909 purple_debug_error("jabber", |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
2910 "jabber_initiate_media: NULL stream\n"); |
26447
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26417
diff
changeset
|
2911 return FALSE; |
26081
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
2912 } |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
2913 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2914 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2915 if((resource = jabber_get_resource(who)) != NULL) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2916 /* they've specified a resource, no need to ask or |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2917 * default or anything, just do it */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2918 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2919 jb = jabber_buddy_find(js, who, FALSE); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2920 jbr = jabber_buddy_find_resource(jb, resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2921 g_free(resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2922 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2923 if (type & PURPLE_MEDIA_AUDIO && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2924 !jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2925 JINGLE_APP_RTP_SUPPORT_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2926 jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2927 GOOGLE_VOICE_CAP)) |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2928 return jabber_google_session_initiate(js, who, type); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2929 else |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2930 return jingle_rtp_initiate_media(js, who, type); |
26081
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
2931 } |
44a528094cbf
Support initiating voice calls to GTalk and Gmail.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26062
diff
changeset
|
2932 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2933 jb = jabber_buddy_find(js, who, FALSE); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2934 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2935 if(!jb || !jb->resources) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2936 /* no resources online, we're trying to initiate with someone |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2937 * whose presence we're not subscribed to, or |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2938 * someone who is offline. Let's inform the user */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2939 char *msg; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2940 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2941 if(!jb) { |
26518
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26514
diff
changeset
|
2942 msg = g_strdup_printf(_("Unable to initiate media with %s: invalid JID"), who); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2943 } else if(jb->subscription & JABBER_SUB_TO) { |
26518
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26514
diff
changeset
|
2944 msg = g_strdup_printf(_("Unable to initiate media with %s: user is not online"), who); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2945 } else { |
26518
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26514
diff
changeset
|
2946 msg = g_strdup_printf(_("Unable to initiate media with %s: not subscribed to user presence"), who); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2947 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2948 |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2949 purple_notify_error(account, _("Media Initiation Failed"), |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2950 _("Media Initiation Failed"), msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2951 g_free(msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2952 return FALSE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2953 } else if(!jb->resources->next) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2954 /* only 1 resource online (probably our most common case) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2955 * so no need to ask who to initiate with */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2956 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2957 gboolean result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2958 jbr = jb->resources->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2959 name = g_strdup_printf("%s/%s", who, jbr->name); |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2960 result = jabber_initiate_media(account, name, type); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2961 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2962 return result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2963 } else { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2964 /* we've got multiple resources, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2965 * we need to pick one to initiate with */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2966 GList *l; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2967 char *msg; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2968 PurpleRequestFields *fields; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2969 PurpleRequestField *field = purple_request_field_choice_new( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2970 "resource", _("Resource"), 0); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2971 PurpleRequestFieldGroup *group; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2972 JabberMediaRequest *request; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2973 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2974 for(l = jb->resources; l; l = l->next) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2975 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2976 JabberBuddyResource *ljbr = l->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2977 PurpleMediaCaps caps; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2978 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2979 name = g_strdup_printf("%s/%s", who, ljbr->name); |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
2980 caps = jabber_get_media_caps(account, name); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2981 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2982 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2983 if ((type & PURPLE_MEDIA_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2984 (type & PURPLE_MEDIA_VIDEO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2985 if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2986 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2987 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2988 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2989 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2990 } else if (type & (PURPLE_MEDIA_AUDIO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2991 (caps & PURPLE_MEDIA_CAPS_AUDIO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2992 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2993 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2994 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2995 }else if (type & (PURPLE_MEDIA_VIDEO) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2996 (caps & PURPLE_MEDIA_CAPS_VIDEO)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2997 jbr = ljbr; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2998 purple_request_field_choice_add( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
2999 field, jbr->name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3000 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3001 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3002 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3003 if (jbr == NULL) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3004 purple_debug_error("jabber", |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3005 "No resources available\n"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3006 return FALSE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3007 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3008 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3009 if (g_list_length(purple_request_field_choice_get_labels( |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3010 field)) <= 1) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3011 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3012 gboolean result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3013 purple_request_field_destroy(field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3014 name = g_strdup_printf("%s/%s", who, jbr->name); |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3015 result = jabber_initiate_media(account, name, type); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3016 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3017 return result; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3018 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3019 |
26518
28f1512b0f94
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26514
diff
changeset
|
3020 msg = g_strdup_printf(_("Please select the resource of %s with which you would like to start a media session."), who); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3021 fields = purple_request_fields_new(); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3022 group = purple_request_field_group_new(NULL); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3023 request = g_new0(JabberMediaRequest, 1); |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3024 request->account = account; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3025 request->who = g_strdup(who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3026 request->type = type; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3027 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3028 purple_request_field_group_add_field(group, field); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3029 purple_request_fields_add_group(fields, group); |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3030 purple_request_fields(account, _("Select a Resource"), msg, |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3031 NULL, fields, _("Initiate Media"), |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3032 G_CALLBACK(jabber_media_ok_cb), _("Cancel"), |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3033 G_CALLBACK(jabber_media_cancel_cb), |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3034 account, who, NULL, request); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3035 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3036 g_free(msg); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3037 return TRUE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3038 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3039 #endif |
26447
34eb898478b4
Don't assume a PurpleMedia instance will be created immediately.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26417
diff
changeset
|
3040 return FALSE; |
25637
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
3041 } |
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
3042 |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3043 PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who) |
25637
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
3044 { |
26416
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26361
diff
changeset
|
3045 #ifdef USE_VV |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3046 JabberStream *js = (JabberStream *) |
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3047 purple_account_get_connection(account)->proto_data; |
25665
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25664
diff
changeset
|
3048 JabberBuddy *jb; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3049 JabberBuddyResource *jbr; |
26190
d6e23439b77c
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26168
diff
changeset
|
3050 PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE; |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3051 gchar *resource; |
25665
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25664
diff
changeset
|
3052 |
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25664
diff
changeset
|
3053 if (!js) { |
26500
da651b0f40a1
Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26447
diff
changeset
|
3054 purple_debug_info("jabber", |
da651b0f40a1
Demote debug error to info.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26447
diff
changeset
|
3055 "jabber_can_do_media: NULL stream\n"); |
25665
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25664
diff
changeset
|
3056 return FALSE; |
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25664
diff
changeset
|
3057 } |
1f085713c281
Fix crash bug when checking if a contact can do media when logging out.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25664
diff
changeset
|
3058 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3059 if ((resource = jabber_get_resource(who)) != NULL) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3060 /* they've specified a resource, no need to ask or |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3061 * default or anything, just do it */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3062 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3063 jb = jabber_buddy_find(js, who, FALSE); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3064 jbr = jabber_buddy_find_resource(jb, resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3065 g_free(resource); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3066 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3067 if (!jbr) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3068 purple_debug_error("jabber", "jabber_get_media_caps:" |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3069 " Can't find resource %s\n", who); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3070 return caps; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3071 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3072 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3073 if (jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3074 JINGLE_APP_RTP_SUPPORT_AUDIO)) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3075 caps |= PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION | |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3076 PURPLE_MEDIA_CAPS_AUDIO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3077 if (jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3078 JINGLE_APP_RTP_SUPPORT_VIDEO)) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3079 caps |= PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION | |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3080 PURPLE_MEDIA_CAPS_VIDEO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3081 if (caps & PURPLE_MEDIA_CAPS_AUDIO && caps & |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3082 PURPLE_MEDIA_CAPS_VIDEO) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3083 caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3084 if (caps != PURPLE_MEDIA_CAPS_NONE) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3085 if (!jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3086 JINGLE_TRANSPORT_ICEUDP) && |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3087 !jabber_resource_has_capability(jbr, |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3088 JINGLE_TRANSPORT_RAWUDP)) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3089 purple_debug_info("jingle-rtp", "Buddy doesn't " |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3090 "support the same transport types\n"); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3091 caps = PURPLE_MEDIA_CAPS_NONE; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3092 } else |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3093 caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION | |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3094 PURPLE_MEDIA_CAPS_CHANGE_DIRECTION; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3095 } |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3096 if (jabber_resource_has_capability(jbr, GOOGLE_VOICE_CAP)) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3097 caps |= PURPLE_MEDIA_CAPS_AUDIO; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3098 return caps; |
25664
d0ac3c438b71
Check remote JID's capabilities for audio and video XEP support.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
25662
diff
changeset
|
3099 } |
26046
99055b8db16b
Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26043
diff
changeset
|
3100 |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3101 jb = jabber_buddy_find(js, who, FALSE); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3102 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3103 if(!jb || !jb->resources) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3104 /* no resources online, we're trying to get caps for someone |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3105 * whose presence we're not subscribed to, or |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3106 * someone who is offline. */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3107 return caps; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3108 } else if(!jb->resources->next) { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3109 /* only 1 resource online (probably our most common case) */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3110 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3111 jbr = jb->resources->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3112 name = g_strdup_printf("%s/%s", who, jbr->name); |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3113 caps = jabber_get_media_caps(account, name); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3114 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3115 } else { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3116 /* we've got multiple resources, combine their caps */ |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3117 GList *l; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3118 |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3119 for(l = jb->resources; l; l = l->next) |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3120 { |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3121 gchar *name; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3122 jbr = l->data; |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3123 name = g_strdup_printf("%s/%s", who, jbr->name); |
26606
df9042312063
Switch media to store accounts rather than connections.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26559
diff
changeset
|
3124 caps |= jabber_get_media_caps(account, name); |
26514
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3125 g_free(name); |
0adf41b3de79
Add a resource selector when initiating media.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26500
diff
changeset
|
3126 } |
26046
99055b8db16b
Choose the transport type according to the responder's caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26043
diff
changeset
|
3127 } |
26190
d6e23439b77c
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26168
diff
changeset
|
3128 |
d6e23439b77c
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26168
diff
changeset
|
3129 return caps; |
26416
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26361
diff
changeset
|
3130 #else |
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26361
diff
changeset
|
3131 return PURPLE_MEDIA_CAPS_NONE; |
6f0200f1e497
Clean up usage of USE_VV in the XMPP protocol.
Mike Ruprecht <maiku@soc.pidgin.im>
parents:
26361
diff
changeset
|
3132 #endif |
25637
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
3133 } |
92e71f6e10d4
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents:
25635
diff
changeset
|
3134 |
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
|
3135 void jabber_register_commands(void) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3136 { |
15823 | 3137 purple_cmd_register("config", "", PURPLE_CMD_P_PRPL, |
3138 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3139 "prpl-jabber", jabber_cmd_chat_config, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3140 _("config: Configure a chat room."), NULL); |
15823 | 3141 purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL, |
3142 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3143 "prpl-jabber", jabber_cmd_chat_config, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3144 _("configure: Configure a chat room."), NULL); |
15823 | 3145 purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL, |
3146 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3147 "prpl-jabber", jabber_cmd_chat_nick, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3148 _("nick <new nickname>: Change your nickname."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3149 NULL); |
15823 | 3150 purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL, |
3151 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | |
3152 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3153 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
|
3154 NULL); |
15823 | 3155 purple_cmd_register("register", "", PURPLE_CMD_P_PRPL, |
3156 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3157 "prpl-jabber", jabber_cmd_chat_register, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3158 _("register: Register with a chat room."), NULL); |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3159 /* XXX: there needs to be a core /topic cmd, methinks */ |
15823 | 3160 purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, |
3161 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | |
3162 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3163 jabber_cmd_chat_topic, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3164 _("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
|
3165 NULL); |
15823 | 3166 purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL, |
3167 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | |
3168 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3169 jabber_cmd_chat_ban, |
22602
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22448
diff
changeset
|
3170 _("ban <user> [reason]: Ban a user from the room."), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3171 NULL); |
15823 | 3172 purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL, |
3173 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | |
3174 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3175 jabber_cmd_chat_affiliate, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3176 _("affiliate <user> <owner|admin|member|outcast|none>: Set a user's affiliation with the room."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3177 NULL); |
15823 | 3178 purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL, |
3179 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | |
3180 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3181 jabber_cmd_chat_role, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3182 _("role <user> <moderator|participant|visitor|none>: Set a user's role in the room."), |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3183 NULL); |
15823 | 3184 purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL, |
3185 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | |
3186 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3187 jabber_cmd_chat_invite, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3188 _("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
|
3189 NULL); |
15823 | 3190 purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL, |
3191 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | |
3192 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3193 jabber_cmd_chat_join, |
22602
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22448
diff
changeset
|
3194 _("join: <room> [password]: Join a chat on this server."), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3195 NULL); |
15823 | 3196 purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL, |
3197 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | | |
3198 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3199 jabber_cmd_chat_kick, |
22602
9a84976c8e76
Correct some help strings for Jabber slash commands
Mark Doliner <mark@kingant.net>
parents:
22448
diff
changeset
|
3200 _("kick <user> [reason]: Kick a user from the room."), |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3201 NULL); |
15823 | 3202 purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL, |
3203 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3204 "prpl-jabber", jabber_cmd_chat_msg, |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3205 _("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
|
3206 NULL); |
17562
6ab1089e2101
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <pidgin@monitzer.com>
parents:
17561
diff
changeset
|
3207 purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL, |
17572
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
3208 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
3209 PURPLE_CMD_FLAG_PRPL_ONLY, |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
3210 "prpl-jabber", jabber_cmd_ping, |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
3211 _("ping <jid>: Ping a user/component/server."), |
2e0799b916b9
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <pidgin@monitzer.com>
parents:
17568
diff
changeset
|
3212 NULL); |
24154
b3ab1c23cdf6
Register the /buzz command using PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS.
Marcus Lundblad <ml@update.uu.se>
parents:
24153
diff
changeset
|
3213 purple_cmd_register("buzz", "w", PURPLE_CMD_P_PRPL, |
25443
5f9a24d1c25e
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25442
diff
changeset
|
3214 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY | |
24154
b3ab1c23cdf6
Register the /buzz command using PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS.
Marcus Lundblad <ml@update.uu.se>
parents:
24153
diff
changeset
|
3215 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, |
17615
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3216 "prpl-jabber", jabber_cmd_buzz, |
cca457b9158b
disapproval of revision '217714a0fa711773c0d419f8cd82297ffc339507'
Andreas Monitzer <pidgin@monitzer.com>
parents:
17614
diff
changeset
|
3217 _("buzz: Buzz a user to get their attention"), NULL); |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3218 } |
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3219 |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3220 /* IPC functions */ |
25587
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25586
diff
changeset
|
3221 |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3222 /** |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3223 * IPC function for determining if a contact supports a certain feature. |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3224 * |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3225 * @param account The PurpleAccount |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3226 * @param jid The full JID of the contact. |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3227 * @param feature The feature's namespace. |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3228 * |
25587
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25586
diff
changeset
|
3229 * @return TRUE if supports feature; else FALSE. |
2bf9bf49cea8
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25586
diff
changeset
|
3230 */ |
25586
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3231 static gboolean |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3232 jabber_ipc_contact_has_feature(PurpleAccount *account, const gchar *jid, |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3233 const gchar *feature) |
25586
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3234 { |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3235 PurpleConnection *gc = purple_account_get_connection(account); |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3236 JabberStream *js; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3237 JabberBuddy *jb; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3238 JabberBuddyResource *jbr; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3239 gchar *resource; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3240 |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3241 if (!purple_account_is_connected(account)) |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3242 return FALSE; |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3243 js = gc->proto_data; |
25747
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3244 |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3245 if (!(resource = jabber_get_resource(jid)) || |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3246 !(jb = jabber_buddy_find(js, jid, FALSE)) || |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3247 !(jbr = jabber_buddy_find_resource(jb, resource))) { |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3248 g_free(resource); |
25747
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3249 return FALSE; |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3250 } |
25747
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3251 |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3252 g_free(resource); |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3253 |
25770
b1b1b75a922e
Sprinkle jabber_resource_has_capability in places
Paul Aurich <paul@darkrain42.org>
parents:
25763
diff
changeset
|
3254 return jabber_resource_has_capability(jbr, feature); |
25585
45816181b7de
* fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25575
diff
changeset
|
3255 } |
45816181b7de
* fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25575
diff
changeset
|
3256 |
25588
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25587
diff
changeset
|
3257 static void |
25747
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3258 jabber_ipc_add_feature(const gchar *feature) |
25588
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25587
diff
changeset
|
3259 { |
25747
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3260 if (!feature) |
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3261 return; |
25589 | 3262 jabber_add_feature(feature, 0); |
25747
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3263 |
504c98a90ef5
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <paul@darkrain42.org>
parents:
25742
diff
changeset
|
3264 /* send presence with new caps info for all connected accounts */ |
25590
7f6558c7a0a3
* implemented jabber_caps_broadcast_change() and finished jabber_ipc_add_feature() IPC function
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25589
diff
changeset
|
3265 jabber_caps_broadcast_change(); |
25588
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25587
diff
changeset
|
3266 } |
61f37abc8a70
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25587
diff
changeset
|
3267 |
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
|
3268 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
|
3269 jabber_init_plugin(PurplePlugin *plugin) |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3270 { |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3271 my_protocol = plugin; |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3272 |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3273 jabber_add_identity("client", "pc", NULL, PACKAGE); |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3274 |
25586
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3275 /* initialize jabber_features list */ |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3276 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:
23287
diff
changeset
|
3277 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:
23287
diff
changeset
|
3278 jabber_add_feature("jabber:iq:time", 0); |
25825
69495c6f12af
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents:
25824
diff
changeset
|
3279 jabber_add_feature("urn:xmpp:time", 0); |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3280 jabber_add_feature("jabber:iq:version", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3281 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:
23287
diff
changeset
|
3282 jabber_add_feature("http://jabber.org/protocol/bytestreams", 0); |
25825
69495c6f12af
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents:
25824
diff
changeset
|
3283 jabber_add_feature("http://jabber.org/protocol/caps", 0); |
69495c6f12af
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <paul@darkrain42.org>
parents:
25824
diff
changeset
|
3284 jabber_add_feature("http://jabber.org/protocol/chatstates", 0); |
25575
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3285 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:
23287
diff
changeset
|
3286 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:
23287
diff
changeset
|
3287 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:
23287
diff
changeset
|
3288 jabber_add_feature("http://jabber.org/protocol/muc", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3289 jabber_add_feature("http://jabber.org/protocol/muc#user", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3290 jabber_add_feature("http://jabber.org/protocol/si", 0); |
26eabe8e739b
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23287
diff
changeset
|
3291 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:
23287
diff
changeset
|
3292 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:
23287
diff
changeset
|
3293 jabber_add_feature("urn:xmpp:ping", 0); |
26529
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26528
diff
changeset
|
3294 |
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26528
diff
changeset
|
3295 /* Jingle features! */ |
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26528
diff
changeset
|
3296 jabber_add_feature(JINGLE, 0); |
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26528
diff
changeset
|
3297 jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0); |
26536
9131368ba4be
Advertise ICEUDP only when libnice is available
Paul Aurich <paul@darkrain42.org>
parents:
26535
diff
changeset
|
3298 |
26535
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3299 #ifdef USE_VV |
26539
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26536
diff
changeset
|
3300 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:
26536
diff
changeset
|
3301 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:
26536
diff
changeset
|
3302 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_AUDIO, jabber_audio_enabled); |
20743d9bd62d
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <paul@darkrain42.org>
parents:
26536
diff
changeset
|
3303 jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled); |
26819
8b7d1aed6d59
merge of '8ddbfe5d6f5c2455497d11ccbfff769ed4e9fad4'
Paul Aurich <paul@darkrain42.org>
diff
changeset
|
3304 jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0); |
26535
ecf6fd808d23
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <paul@darkrain42.org>
parents:
26533
diff
changeset
|
3305 #endif |
26529
1ecbda91458a
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <paul@darkrain42.org>
parents:
26528
diff
changeset
|
3306 |
25586
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3307 /* IPC functions */ |
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3308 purple_plugin_ipc_register(plugin, "contact_has_feature", PURPLE_CALLBACK(jabber_ipc_contact_has_feature), |
25760
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3309 purple_marshal_BOOLEAN__POINTER_POINTER_POINTER, |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3310 purple_value_new(PURPLE_TYPE_BOOLEAN), 3, |
f462fa160f06
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <paul@darkrain42.org>
parents:
25747
diff
changeset
|
3311 purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT), |
25586
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3312 purple_value_new(PURPLE_TYPE_STRING), |
e6f92c0f9770
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
25585
diff
changeset
|
3313 purple_value_new(PURPLE_TYPE_STRING)); |
25589 | 3314 purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature), |
3315 purple_marshal_VOID__POINTER, | |
3316 NULL, 1, | |
3317 purple_value_new(PURPLE_TYPE_STRING)); | |
15374
5fe8042783c1
Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff
changeset
|
3318 } |
25763
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3319 |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3320 void |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3321 jabber_uninit_plugin(void) |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3322 { |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3323 jabber_features_destroy(); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3324 jabber_identities_destroy(); |
860ebaf275ae
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <paul@darkrain42.org>
parents:
25761
diff
changeset
|
3325 } |