libpurple/protocols/jabber/jabber.c

Sat, 06 Dec 2008 02:23:20 +0000

author
Michael Ruprecht <maiku@pidgin.im>
date
Sat, 06 Dec 2008 02:23:20 +0000
branch
vv
changeset 26171
85b43bce42f1
parent 26170
829055c78478
parent 24850
0237007e4424
child 26178
2081d31d5466
permissions
-rw-r--r--

propagate from branch 'im.pidgin.pidgin' (head 13177815fd88e57d393dc7625ce03a0b299cd90b)
to branch 'im.pidgin.pidgin.vv' (head 829055c78478f1a609b99a5db093a126bda7903d)

2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 /*
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2 * purple - Jabber Protocol Plugin
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
3 *
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
4 * Copyright (C) 2003, Nathan Walp <faceprint@faceprint.com>
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
5 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
6 * This program is free software; you can redistribute it and/or modify
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
9 * (at your option) any later version.
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
10 *
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11 * This program is distributed in the hope that it will be useful,
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 * GNU General Public License for more details.
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
17 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19341
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
19 *
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
20 */
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
21 #include "internal.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
22
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
23 #include "account.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
24 #include "accountopt.h"
9030
7b574a641391 [gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents: 9015
diff changeset
25 #include "blist.h"
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
26 #include "cmds.h"
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
27 #include "connection.h"
15952
c087855dc551 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15884
diff changeset
28 #include "conversation.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
29 #include "debug.h"
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
30 #include "dnssrv.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
31 #include "message.h"
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
32 #include "notify.h"
8713
8a7baa8f8460 [gaim-migrate @ 9467]
Gary Kramlich <grim@pidgin.im>
parents: 8591
diff changeset
33 #include "pluginpref.h"
14175
2bc5a80c5071 [gaim-migrate @ 16747]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
34 #include "proxy.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
35 #include "prpl.h"
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
36 #include "request.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
37 #include "server.h"
7095
17d2b54254f8 [gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents: 7072
diff changeset
38 #include "util.h"
9943
b54a762f60fa [gaim-migrate @ 10835]
Nathan Walp <nwalp@pidgin.im>
parents: 9917
diff changeset
39 #include "version.h"
15952
c087855dc551 Re-arrange #includes so 'make check' stands a chance of passing during
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15884
diff changeset
40 #include "xmlnode.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
41
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
42 #include "auth.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
43 #include "buddy.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
44 #include "chat.h"
23626
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
45 #include "data.h"
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
46 #include "disco.h"
15265
a5b0ab58b05d [gaim-migrate @ 17993]
Sean Egan <seanegan@pidgin.im>
parents: 15237
diff changeset
47 #include "google.h"
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
48 #include "iq.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
49 #include "jutil.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
50 #include "message.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
51 #include "parser.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
52 #include "presence.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
53 #include "jabber.h"
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
54 #include "roster.h"
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
55 #include "ping.h"
9466
b6425eab60ca [gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents: 9414
diff changeset
56 #include "si.h"
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
57 #include "xdata.h"
17768
7be011945a1b added preliminary frame for pep-support
Andreas Monitzer <am@adiumx.com>
parents: 17767
diff changeset
58 #include "pep.h"
17817
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
59 #include "adhoccommands.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
60
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
61 #include "jingle/jingle.h"
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
62 #include "jingle/rtp.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5685
diff changeset
63
23704
9b88c9b23aed Use USE_VV instead of USE_FARSIGHT.
Michael Ruprecht <maiku@pidgin.im>
parents: 23701
diff changeset
64 #ifdef USE_VV
23697
299bafcd8eb8 Updates voice and video to use Farsight 2, gets XMPP voice conferences
Michael Ruprecht <maiku@pidgin.im>
parents: 23696
diff changeset
65 #include <gst/farsight/fs-conference-iface.h>
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
66
26165
6eb15ae60b2b Fix GTalk vv caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26146
diff changeset
67 #define GTALK_CAP "http://www.google.com/xmpp/protocol/voice/v1"
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
68
23700
e47be56bdd2b Fix compiling with the --disable-vv switch.
Michael Ruprecht <maiku@pidgin.im>
parents: 23698
diff changeset
69 #endif
23626
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
70
17813
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
71 #define JABBER_CONNECT_STEPS (js->gsc ? 9 : 5)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
72
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
73 static PurplePlugin *my_protocol = NULL;
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
74 GList *jabber_features = NULL;
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
75
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
76 static void jabber_unregister_account_cb(JabberStream *js);
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
77 static void try_srv_connect(JabberStream *js);
4249
62583b5d3663 [gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents: 4245
diff changeset
78
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
79 static void jabber_stream_init(JabberStream *js)
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
80 {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
81 char *open_stream;
3340
7e59a209931d [gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3337
diff changeset
82
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
83 open_stream = g_strdup_printf("<stream:stream to='%s' "
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
84 "xmlns='jabber:client' "
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
85 "xmlns:stream='http://etherx.jabber.org/streams' "
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
86 "version='1.0'>",
7291
3d8a237f36cb [gaim-migrate @ 7872]
Nathan Walp <nwalp@pidgin.im>
parents: 7274
diff changeset
87 js->user->domain);
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
88 /* setup the parser fresh for each stream */
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
89 jabber_parser_setup(js);
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
90 jabber_send_raw(js, open_stream, -1);
14062
dd8d7eb8fa76 [gaim-migrate @ 16585]
Ethan Blanton <elb@pidgin.im>
parents: 14043
diff changeset
91 js->reinit = FALSE;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
92 g_free(open_stream);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
93 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
94
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
95 static void
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
96 jabber_session_initialized_cb(JabberStream *js, xmlnode *packet, gpointer data)
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
97 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
98 const char *type = xmlnode_get_attrib(packet, "type");
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
99 if(type && !strcmp(type, "result")) {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
100 jabber_stream_set_state(js, JABBER_STREAM_CONNECTED);
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
101 if(js->unregistration)
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
102 jabber_unregister_account_cb(js);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
103 } else {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
104 purple_connection_error_reason (js->gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
105 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
106 ("Error initializing session"));
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
107 }
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
108 }
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
109
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
110 static void jabber_session_init(JabberStream *js)
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
111 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
112 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
113 xmlnode *session;
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
114
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
115 jabber_iq_set_callback(iq, jabber_session_initialized_cb, NULL);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
116
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
117 session = xmlnode_new_child(iq->node, "session");
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
118 xmlnode_set_namespace(session, "urn:ietf:params:xml:ns:xmpp-session");
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
119
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
120 jabber_iq_send(iq);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
121 }
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
122
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
123 static void jabber_bind_result_cb(JabberStream *js, xmlnode *packet,
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
124 gpointer data)
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
125 {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
126 const char *type = xmlnode_get_attrib(packet, "type");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
127 xmlnode *bind;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
128
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
129 if(type && !strcmp(type, "result") &&
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
130 (bind = xmlnode_get_child_with_namespace(packet, "bind", "urn:ietf:params:xml:ns:xmpp-bind"))) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
131 xmlnode *jid;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
132 char *full_jid;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
133 if((jid = xmlnode_get_child(bind, "jid")) && (full_jid = xmlnode_get_data(jid))) {
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
134 JabberBuddy *my_jb = NULL;
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
135 jabber_id_free(js->user);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
136 if(!(js->user = jabber_id_new(full_jid))) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
137 purple_connection_error_reason (js->gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
138 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
139 _("Invalid response from server."));
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
140 }
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
141 if((my_jb = jabber_buddy_find(js, full_jid, TRUE)))
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
142 my_jb->subscription |= JABBER_SUB_BOTH;
24430
77ba88ca54a6 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <datallah@pidgin.im>
parents: 24254
diff changeset
143
77ba88ca54a6 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <datallah@pidgin.im>
parents: 24254
diff changeset
144 purple_connection_set_display_name(js->gc, full_jid);
77ba88ca54a6 Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <datallah@pidgin.im>
parents: 24254
diff changeset
145
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10490
diff changeset
146 g_free(full_jid);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
147 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
148 } else {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
149 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
150 char *msg = jabber_parse_error(js, packet, &reason);
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
151 purple_connection_error_reason (js->gc, reason, msg);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
152 g_free(msg);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
153 }
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
154
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
155 jabber_session_init(js);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
156 }
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
157
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
158 static char *jabber_prep_resource(char *input) {
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
159 char hostname[256]; /* current hostname */
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
160
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
161 /* Empty resource == don't send any */
24828
4159819e4231 Revert the part of 280dc76b which broke XMPP resources such that only those
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24824
diff changeset
162 if (*input == '\0')
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
163 return NULL;
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
164
24833
d2257d9b0ffa Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24828
diff changeset
165 if (strstr(input, "__HOSTNAME__") == NULL)
24850
0237007e4424 darkrain again
Ka-Hing Cheung <khc@pidgin.im>
parents: 24833
diff changeset
166 return g_strdup(input);
24833
d2257d9b0ffa Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 24828
diff changeset
167
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
168 /* Replace __HOSTNAME__ with hostname */
24824
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
169 if (gethostname(hostname, sizeof(hostname) - 1)) {
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
170 purple_debug_warning("jabber", "gethostname: %s\n", g_strerror(errno));
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
171 /* according to glibc doc, the only time an error is returned
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
172 is if the hostname is longer than the buffer, in which case
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
173 glibc 2.2+ would still fill the buffer with partial
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
174 hostname, so maybe we want to detect that and use it
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
175 instead
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
176 */
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
177 strcpy(hostname, "localhost");
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
178 }
24824
2da1f210b9a2 me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents: 24820
diff changeset
179 hostname[sizeof(hostname) - 1] = '\0';
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
180
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
181 return purple_strreplace(input, "__HOSTNAME__", hostname);
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
182 }
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
183
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
184 static void jabber_stream_features_parse(JabberStream *js, xmlnode *packet)
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
185 {
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
186 if(xmlnode_get_child(packet, "starttls")) {
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
187 if(jabber_process_starttls(js, packet))
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
188
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
189 return;
17830
ae563ca41109 Added an option to require SSL or TLS when connecting to an XMPP server.
Andreas Monitzer <am@adiumx.com>
parents: 17828
diff changeset
190 } else if(purple_account_get_bool(js->gc->account, "require_tls", FALSE) && !js->gsc) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
191 purple_connection_error_reason (js->gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
192 PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
193 _("You require encryption, but it is not available on this server."));
17830
ae563ca41109 Added an option to require SSL or TLS when connecting to an XMPP server.
Andreas Monitzer <am@adiumx.com>
parents: 17828
diff changeset
194 return;
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
195 }
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
196
10988
c164f2e5dfaa [gaim-migrate @ 12825]
Nathan Walp <nwalp@pidgin.im>
parents: 10941
diff changeset
197 if(js->registration) {
c164f2e5dfaa [gaim-migrate @ 12825]
Nathan Walp <nwalp@pidgin.im>
parents: 10941
diff changeset
198 jabber_register_start(js);
c164f2e5dfaa [gaim-migrate @ 12825]
Nathan Walp <nwalp@pidgin.im>
parents: 10941
diff changeset
199 } else if(xmlnode_get_child(packet, "mechanisms")) {
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
200 jabber_auth_start(js, packet);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
201 } else if(xmlnode_get_child(packet, "bind")) {
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
202 xmlnode *bind, *resource;
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
203 char *requested_resource;
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
204 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
205 bind = xmlnode_new_child(iq->node, "bind");
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
206 xmlnode_set_namespace(bind, "urn:ietf:params:xml:ns:xmpp-bind");
24819
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
207 requested_resource = jabber_prep_resource(js->user->resource);
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
208
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
209 if (requested_resource != NULL) {
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
210 resource = xmlnode_new_child(bind, "resource");
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
211 xmlnode_insert_data(resource, requested_resource, -1);
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
212 free(requested_resource);
95e726e2bc06 Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents: 24693
diff changeset
213 }
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
214
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
215 jabber_iq_set_callback(iq, jabber_bind_result_cb, NULL);
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
216
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
217 jabber_iq_send(iq);
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
218 } else /* if(xmlnode_get_child_with_namespace(packet, "auth")) */ {
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
219 /* If we get an empty stream:features packet, or we explicitly get
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
220 * an auth feature with namespace http://jabber.org/features/iq-auth
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
221 * we should revert back to iq:auth authentication, even though we're
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
222 * connecting to an XMPP server. */
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
223 js->auth_type = JABBER_AUTH_IQ_AUTH;
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
224 jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING);
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
225 }
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
226 }
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
227
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
228 static void jabber_stream_handle_error(JabberStream *js, xmlnode *packet)
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
229 {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
230 PurpleConnectionError reason = PURPLE_CONNECTION_ERROR_NETWORK_ERROR;
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
231 char *msg = jabber_parse_error(js, packet, &reason);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
232
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
233 purple_connection_error_reason (js->gc, reason, msg);
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
234
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
235 g_free(msg);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
236 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
237
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
238 static void tls_init(JabberStream *js);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
239
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
240 void jabber_process_packet(JabberStream *js, xmlnode **packet)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
241 {
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
242 const char *xmlns;
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
243
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
244 purple_signal_emit(my_protocol, "jabber-receiving-xmlnode", js->gc, packet);
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
245
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
246 /* if the signal leaves us with a null packet, we're done */
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
247 if(NULL == *packet)
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
248 return;
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
249
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
250 xmlns = xmlnode_get_namespace(*packet);
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
251
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
252 if(!strcmp((*packet)->name, "iq")) {
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
253 jabber_iq_parse(js, *packet);
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
254 } else if(!strcmp((*packet)->name, "presence")) {
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
255 jabber_presence_parse(js, *packet);
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
256 } else if(!strcmp((*packet)->name, "message")) {
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
257 jabber_message_parse(js, *packet);
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
258 } else if(!strcmp((*packet)->name, "stream:features")) {
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
259 jabber_stream_features_parse(js, *packet);
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
260 } else if (!strcmp((*packet)->name, "features") && xmlns &&
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
261 !strcmp(xmlns, "http://etherx.jabber.org/streams")) {
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
262 jabber_stream_features_parse(js, *packet);
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
263 } else if(!strcmp((*packet)->name, "stream:error") ||
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
264 (!strcmp((*packet)->name, "error") && xmlns &&
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
265 !strcmp(xmlns, "http://etherx.jabber.org/streams")))
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
266 {
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
267 jabber_stream_handle_error(js, *packet);
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
268 } else if(!strcmp((*packet)->name, "challenge")) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
269 if(js->state == JABBER_STREAM_AUTHENTICATING)
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
270 jabber_auth_handle_challenge(js, *packet);
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
271 } else if(!strcmp((*packet)->name, "success")) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
272 if(js->state == JABBER_STREAM_AUTHENTICATING)
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
273 jabber_auth_handle_success(js, *packet);
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
274 } else if(!strcmp((*packet)->name, "failure")) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
275 if(js->state == JABBER_STREAM_AUTHENTICATING)
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
276 jabber_auth_handle_failure(js, *packet);
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
277 } else if(!strcmp((*packet)->name, "proceed")) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
278 if(js->state == JABBER_STREAM_AUTHENTICATING && !js->gsc)
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
279 tls_init(js);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
280 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
281 purple_debug(PURPLE_DEBUG_WARNING, "jabber", "Unknown packet: %s\n",
17828
6957bf9d7330 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 <am@adiumx.com>
parents: 17827
diff changeset
282 (*packet)->name);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
283 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
284 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
285
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
286 static int jabber_do_send(JabberStream *js, const char *data, int len)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
287 {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
288 int ret;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
289
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
290 if (js->gsc)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
291 ret = purple_ssl_write(js->gsc, data, len);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
292 else
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
293 ret = write(js->fd, data, len);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
294
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
295 return ret;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
296 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
297
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
298 static void jabber_send_cb(gpointer data, gint source, PurpleInputCondition cond)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
299 {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
300 JabberStream *js = data;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
301 int ret, writelen;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
302 writelen = purple_circ_buffer_get_max_read(js->write_buffer);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
303
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
304 if (writelen == 0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
305 purple_input_remove(js->writeh);
13746
790924f38349 [gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents: 13546
diff changeset
306 js->writeh = 0;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
307 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
308 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
309
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
310 ret = jabber_do_send(js, js->write_buffer->outptr, writelen);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
311
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
312 if (ret < 0 && errno == EAGAIN)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
313 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
314 else if (ret <= 0) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
315 purple_connection_error_reason (js->gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
316 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
317 _("Write error"));
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
318 return;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
319 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
320
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
321 purple_circ_buffer_mark_read(js->write_buffer, ret);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
322 }
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
323
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
324 static gboolean do_jabber_send_raw(JabberStream *js, const char *data, int len)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
325 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
326 int ret;
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
327 gboolean success = TRUE;
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
328
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
329 if (len == -1)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
330 len = strlen(data);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
331
13746
790924f38349 [gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents: 13546
diff changeset
332 if (js->writeh == 0)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
333 ret = jabber_do_send(js, data, len);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
334 else {
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
335 ret = -1;
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
336 errno = EAGAIN;
2814
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
337 }
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
338
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
339 if (ret < 0 && errno != EAGAIN) {
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
340 purple_connection_error_reason (js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
341 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
342 _("Write error"));
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
343 success = FALSE;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
344 } else if (ret < len) {
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
345 if (ret < 0)
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
346 ret = 0;
13746
790924f38349 [gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents: 13546
diff changeset
347 if (js->writeh == 0)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
348 js->writeh = purple_input_add(
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
349 js->gsc ? js->gsc->fd : js->fd,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
350 PURPLE_INPUT_WRITE, jabber_send_cb, js);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
351 purple_circ_buffer_append(js->write_buffer,
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
352 data + ret, len - ret);
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
353 }
23519
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
354
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
355 return success;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
356 }
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
357
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
358 void jabber_send_raw(JabberStream *js, const char *data, int len)
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
359 {
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
360
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
361 /* because printing a tab to debug every minute gets old */
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
362 if(strcmp(data, "\t"))
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
363 purple_debug(PURPLE_DEBUG_MISC, "jabber", "Sending%s: %s\n",
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
364 js->gsc ? " (ssl)" : "", data);
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
365
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
366 /* If we've got a security layer, we need to encode the data,
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
367 * splitting it on the maximum buffer length negotiated */
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
368
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
369 purple_signal_emit(my_protocol, "jabber-sending-text", js->gc, &data);
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
370 if (data == NULL)
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
371 return;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
372
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
373 #ifdef HAVE_CYRUS_SASL
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
374 if (js->sasl_maxbuf>0) {
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
375 int pos = 0;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
376
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
377 if (!js->gsc && js->fd<0)
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
378 return;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
379
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
380 if (len == -1)
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
381 len = strlen(data);
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
382
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
383 while (pos < len) {
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
384 int towrite;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
385 const char *out;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
386 unsigned olen;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
387
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
388 towrite = MIN((len - pos), js->sasl_maxbuf);
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
389
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
390 sasl_encode(js->sasl, &data[pos], towrite, &out, &olen);
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
391 pos += towrite;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
392
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
393 if (!do_jabber_send_raw(js, out, olen))
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
394 break;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
395 }
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
396 return;
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
397 }
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
398 #endif
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
399
7cbd7ed333d3 Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23428
diff changeset
400 do_jabber_send_raw(js, data, len);
14604
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
401 }
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
402
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
403 int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len)
14604
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
404 {
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
405 JabberStream *js = (JabberStream*)gc->proto_data;
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
406 jabber_send_raw(js, buf, len);
67a7c42a8654 [gaim-migrate @ 17263]
Sean Egan <seanegan@pidgin.im>
parents: 14498
diff changeset
407 return len;
2814
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
408 }
91cc1a0cdee0 [gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2800
diff changeset
409
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
410 void jabber_send(JabberStream *js, xmlnode *packet)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
411 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
412 char *txt;
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
413 int len;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
414
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
415 purple_signal_emit(my_protocol, "jabber-sending-xmlnode", js->gc, &packet);
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
416
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
417 /* if we get NULL back, we're done processing */
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
418 if(NULL == packet)
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
419 return;
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
420
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
421 txt = xmlnode_to_str(packet, &len);
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
422 jabber_send_raw(js, txt, len);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
423 g_free(txt);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
424 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
425
23520
9c2d88f3a10b We only allow one keepalive timeout, so simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23519
diff changeset
426 static void jabber_pong_cb(JabberStream *js, xmlnode *packet, gpointer unused)
21974
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
427 {
23520
9c2d88f3a10b We only allow one keepalive timeout, so simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23519
diff changeset
428 purple_timeout_remove(js->keepalive_timeout);
22096
0d28b254d322 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 <evands@pidgin.im>
parents: 22067
diff changeset
429 js->keepalive_timeout = -1;
21974
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
430 }
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
431
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
432 static gboolean jabber_pong_timeout(PurpleConnection *gc)
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
433 {
22101
747c8ade85aa Masca noticed that 0d28b254d322fb0006034065870603672e5666d2 made jabber.c not
Will Thompson <resiak@pidgin.im>
parents: 22096
diff changeset
434 JabberStream *js = gc->proto_data;
21974
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
435 purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
436 _("Ping timeout"));
22096
0d28b254d322 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 <evands@pidgin.im>
parents: 22067
diff changeset
437 js->keepalive_timeout = -1;
21974
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
438 return FALSE;
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
439 }
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
440
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
441 void jabber_keepalive(PurpleConnection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
442 {
22096
0d28b254d322 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 <evands@pidgin.im>
parents: 22067
diff changeset
443 JabberStream *js = gc->proto_data;
21974
daa6296d122d 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@pidgin.im>
parents: 21929
diff changeset
444
22587
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
445 if (js->keepalive_timeout == -1) {
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
446 JabberIq *iq = jabber_iq_new(js, JABBER_IQ_GET);
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
447
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
448 xmlnode *ping = xmlnode_new_child(iq->node, "ping");
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
449 xmlnode_set_namespace(ping, "urn:xmpp:ping");
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
450
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
451 js->keepalive_timeout = purple_timeout_add_seconds(120, (GSourceFunc)(jabber_pong_timeout), gc);
23520
9c2d88f3a10b We only allow one keepalive timeout, so simplify this.
Daniel Atallah <datallah@pidgin.im>
parents: 23519
diff changeset
452 jabber_iq_set_callback(iq, jabber_pong_cb, NULL);
22587
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
453 jabber_iq_send(iq);
661321b20a01 Only allow one keepalive_timeout at a time. This prevents us from starting a
Evan Schoenberg <evands@pidgin.im>
parents: 22580
diff changeset
454 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
455 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
456
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
457 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
458 jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
459 PurpleInputCondition cond)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
460 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
461 PurpleConnection *gc = data;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
462 JabberStream *js = gc->proto_data;
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
463 int len;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
464 static char buf[4096];
6768
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
465
14030
23144f1dc950 [gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents: 14004
diff changeset
466 /* TODO: It should be possible to make this check unnecessary */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
467 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
468 purple_ssl_close(gsc);
6768
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
469 return;
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
470 }
64384a76f515 [gaim-migrate @ 7305]
Nathan Walp <nwalp@pidgin.im>
parents: 6764
diff changeset
471
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
472 while((len = purple_ssl_read(gsc, buf, sizeof(buf) - 1)) > 0) {
22277
7c386db62c81 Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@pidgin.im>
parents: 22225
diff changeset
473 gc->last_received = time(NULL);
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
474 buf[len] = '\0';
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
475 purple_debug(PURPLE_DEBUG_INFO, "jabber", "Recv (ssl)(%d): %s\n", len, buf);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
476 jabber_parser_process(js, buf, len);
14062
dd8d7eb8fa76 [gaim-migrate @ 16585]
Ethan Blanton <elb@pidgin.im>
parents: 14043
diff changeset
477 if(js->reinit)
dd8d7eb8fa76 [gaim-migrate @ 16585]
Ethan Blanton <elb@pidgin.im>
parents: 14043
diff changeset
478 jabber_stream_init(js);
13280
8d45d67480e6 [gaim-migrate @ 15645]
Greg Hudson <ghudson@mit.edu>
parents: 13275
diff changeset
479 }
8d45d67480e6 [gaim-migrate @ 15645]
Greg Hudson <ghudson@mit.edu>
parents: 13275
diff changeset
480
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
481 if(len < 0 && errno == EAGAIN)
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
482 return;
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
483 else {
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
484 if (len == 0)
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
485 purple_debug_info("jabber", "Server closed the connection.\n");
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
486 else
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
487 purple_debug_info("jabber", "Disconnected: %s\n", g_strerror(errno));
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
488 purple_connection_error_reason (js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
489 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
490 _("Read Error"));
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
491 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
492 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
493
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
494 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
495 jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
496 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
497 PurpleConnection *gc = data;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
498 JabberStream *js = gc->proto_data;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
499 int len;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
500 static char buf[4096];
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
501
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
502 if(!PURPLE_CONNECTION_IS_VALID(gc))
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
503 return;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
504
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
505 if((len = read(js->fd, buf, sizeof(buf) - 1)) > 0) {
22277
7c386db62c81 Don't send keep-alives if we've received data since in the last KEEPALIVE_INTERVAL seconds
Sean Egan <seanegan@pidgin.im>
parents: 22225
diff changeset
506 gc->last_received = time(NULL);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
507 #ifdef HAVE_CYRUS_SASL
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
508 if (js->sasl_maxbuf>0) {
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
509 const char *out;
14697
518c0fae208e [gaim-migrate @ 17381]
Daniel Atallah <datallah@pidgin.im>
parents: 14668
diff changeset
510 unsigned int olen;
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
511 sasl_decode(js->sasl, buf, len, &out, &olen);
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
512 if (olen>0) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
513 purple_debug(PURPLE_DEBUG_INFO, "jabber", "RecvSASL (%u): %s\n", olen, out);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
514 jabber_parser_process(js,out,olen);
14700
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
515 if(js->reinit)
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
516 jabber_stream_init(js);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
517 }
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
518 return;
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
519 }
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
520 #endif
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
521 buf[len] = '\0';
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
522 purple_debug(PURPLE_DEBUG_INFO, "jabber", "Recv (%d): %s\n", len, buf);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
523 jabber_parser_process(js, buf, len);
14700
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
524 if(js->reinit)
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
525 jabber_stream_init(js);
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
526 } else if(len < 0 && errno == EAGAIN) {
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
527 return;
7177
36ad58ff37d6 [gaim-migrate @ 7745]
Nathan Walp <nwalp@pidgin.im>
parents: 7147
diff changeset
528 } else {
23539
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
529 if (len == 0)
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
530 purple_debug_info("jabber", "Server closed the connection.\n");
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
531 else
19dd5b0bbe76 Only check for EAGAIN if read returned less than 0. This fixes a bug
Mark Doliner <markdoliner@pidgin.im>
parents: 23532
diff changeset
532 purple_debug_info("jabber", "Disconnected: %s\n", g_strerror(errno));
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
533 purple_connection_error_reason (js->gc,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
534 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
535 _("Read Error"));
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
536 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
537 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
538
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
539 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
540 jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
541 PurpleInputCondition cond)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
542 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
543 PurpleConnection *gc = data;
15023
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
544 JabberStream *js;
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
545
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
546 /* TODO: It should be possible to make this check unnecessary */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
547 if(!PURPLE_CONNECTION_IS_VALID(gc)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
548 purple_ssl_close(gsc);
15023
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
549 return;
19993
867bd1dfe680 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 <datallah@pidgin.im>
parents: 19920
diff changeset
550 }
15023
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
551
c38f385a128a [gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents: 14899
diff changeset
552 js = gc->proto_data;
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
553
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
554 if(js->state == JABBER_STREAM_CONNECTING)
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
555 jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
556 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
557 purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc);
17813
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
558
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
559 /* Tell the app that we're doing encryption */
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
560 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION);
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
561 }
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
562
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
563
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
564 static void
14175
2bc5a80c5071 [gaim-migrate @ 16747]
Mark Doliner <markdoliner@pidgin.im>
parents: 14170
diff changeset
565 jabber_login_callback(gpointer data, gint source, const gchar *error)
6764
a3f8025c0631 [gaim-migrate @ 7296]
Nathan Walp <nwalp@pidgin.im>
parents: 6695
diff changeset
566 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
567 PurpleConnection *gc = data;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
568 JabberStream *js = gc->proto_data;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
569
8783
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
570 if (source < 0) {
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
571 if (js->srv_rec != NULL) {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
572 purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record.\n", error);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
573 try_srv_connect(js);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
574 } else {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
575 gchar *tmp;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
576 tmp = g_strdup_printf(_("Could not establish a connection with the server:\n%s"),
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
577 error);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
578 purple_connection_error_reason(gc,
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
579 PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
580 g_free(tmp);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
581 }
8783
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
582 return;
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
583 }
7be6da5bc279 [gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents: 8778
diff changeset
584
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
585 g_free(js->srv_rec);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
586 js->srv_rec = NULL;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
587
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
588 js->fd = source;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
589
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
590 if(js->state == JABBER_STREAM_CONNECTING)
7642
4e1735a499f5 [gaim-migrate @ 8285]
Nathan Walp <nwalp@pidgin.im>
parents: 7630
diff changeset
591 jabber_send_raw(js, "<?xml version='1.0' ?>", -1);
2300
06a3c10f4918 [gaim-migrate @ 2310]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2289
diff changeset
592
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
593 jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
594 gc->inpa = purple_input_add(js->fd, PURPLE_INPUT_READ, jabber_recv_cb, gc);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
595 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
596
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
597 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
598 jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error,
7426
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
599 gpointer data)
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
600 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
601 PurpleConnection *gc = data;
15668
c8831ae23d4c 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 <evands@pidgin.im>
parents: 15558
diff changeset
602 JabberStream *js;
7426
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
603
15668
c8831ae23d4c 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 <evands@pidgin.im>
parents: 15558
diff changeset
604 /* If the connection is already disconnected, we don't need to do anything else */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
605 if(!PURPLE_CONNECTION_IS_VALID(gc))
15668
c8831ae23d4c 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 <evands@pidgin.im>
parents: 15558
diff changeset
606 return;
c8831ae23d4c 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 <evands@pidgin.im>
parents: 15558
diff changeset
607
c8831ae23d4c 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 <evands@pidgin.im>
parents: 15558
diff changeset
608 js = gc->proto_data;
14312
6ce4512aa9a8 [gaim-migrate @ 16932]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
609 js->gsc = NULL;
6ce4512aa9a8 [gaim-migrate @ 16932]
Mark Doliner <markdoliner@pidgin.im>
parents: 14254
diff changeset
610
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
611 purple_connection_ssl_error (gc, error);
7426
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
612 }
c499c64731a1 [gaim-migrate @ 8029]
Nathan Walp <nwalp@pidgin.im>
parents: 7417
diff changeset
613
7427
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
614 static void tls_init(JabberStream *js)
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
615 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
616 purple_input_remove(js->gc->inpa);
7427
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
617 js->gc->inpa = 0;
18449
2d2df64f4303 applied changes from f9186fabb483b56a9d7e8fb7241b2520e9930413
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18235
diff changeset
618 js->gsc = purple_ssl_connect_with_host_fd(js->gc->account, js->fd,
22155
7c2034388bdb 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 <am@adiumx.com>
parents: 22133
diff changeset
619 jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc);
7427
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
620 }
9a301e6b3902 [gaim-migrate @ 8030]
Nathan Walp <nwalp@pidgin.im>
parents: 7426
diff changeset
621
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
622 static gboolean jabber_login_connect(JabberStream *js, const char *domain, const char *host, int port,
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
623 gboolean fatal_failure)
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
624 {
22468
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
625 /* host should be used in preference to domain to
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
626 * allow SASL authentication to work with FQDN of the server,
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
627 * but we use domain as fallback for when users enter IP address
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
628 * in connect server */
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
629 g_free(js->serverFQDN);
22468
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
630 if (purple_ip_address_is_valid(host))
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
631 js->serverFQDN = g_strdup(domain);
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
632 else
c0f99a22627f Use connect server as FQDN for SASL auth except when it is an IP address.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22277
diff changeset
633 js->serverFQDN = g_strdup(host);
15800
2d0ec4fe2681 pass the correct domain to cyrus sasl (sf patch 1663064)
Nathan Walp <nwalp@pidgin.im>
parents: 15783
diff changeset
634
17052
b064b8e0244b fix #699
Nathan Walp <nwalp@pidgin.im>
parents: 17008
diff changeset
635 if (purple_proxy_connect(js->gc, js->gc->account, host,
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
636 port, jabber_login_callback, js->gc) == NULL) {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
637 if (fatal_failure) {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
638 purple_connection_error_reason (js->gc,
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
639 PURPLE_CONNECTION_ERROR_NETWORK_ERROR,
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
640 _("Unable to create socket"));
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
641 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
642
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
643 return FALSE;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
644 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
645
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
646 return TRUE;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
647 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
648
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
649 static void try_srv_connect(JabberStream *js)
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
650 {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
651 while (js->srv_rec != NULL && js->srv_rec_idx < js->max_srv_rec_idx) {
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
652 PurpleSrvResponse *tmp_resp = js->srv_rec + (js->srv_rec_idx++);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
653 if (jabber_login_connect(js, tmp_resp->hostname, tmp_resp->hostname, tmp_resp->port, FALSE))
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
654 return;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
655 }
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
656
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
657 g_free(js->srv_rec);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
658 js->srv_rec = NULL;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
659
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
660 /* Fall back to the defaults (I'm not sure if we should actually do this) */
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
661 jabber_login_connect(js, js->user->domain, js->user->domain,
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
662 purple_account_get_int(js->gc->account, "port", 5222), TRUE);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
663 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
664
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
665 static void srv_resolved_cb(PurpleSrvResponse *resp, int results, gpointer data)
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
666 {
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
667 JabberStream *js = data;
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
668 js->srv_query_data = NULL;
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
669
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
670 if(results) {
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
671 js->srv_rec = resp;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
672 js->srv_rec_idx = 0;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
673 js->max_srv_rec_idx = results;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
674 try_srv_connect(js);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
675 } else {
17052
b064b8e0244b fix #699
Nathan Walp <nwalp@pidgin.im>
parents: 17008
diff changeset
676 jabber_login_connect(js, js->user->domain, js->user->domain,
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
677 purple_account_get_int(js->gc->account, "port", 5222), TRUE);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
678 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
679 }
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
680
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
681 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
682 jabber_login(PurpleAccount *account)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
683 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
684 PurpleConnection *gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
685 const char *connect_server = purple_account_get_string(account,
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
686 "connect_server", "");
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
687 JabberStream *js;
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
688 JabberBuddy *my_jb = NULL;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
689
23626
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
690 gc->flags |= PURPLE_CONNECTION_HTML |
e21afec2f485 Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents: 23325
diff changeset
691 PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
692 js = gc->proto_data = g_new0(JabberStream, 1);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
693 js->gc = gc;
8013
03f5b77cdaf0 [gaim-migrate @ 8693]
Olivier Blin <blino@users.sourceforge.net>
parents: 8011
diff changeset
694 js->fd = -1;
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
695 js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
696 g_free, g_free);
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
697 js->disco_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
698 g_free, g_free);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
699 js->buddies = g_hash_table_new_full(g_str_hash, g_str_equal,
7116
86c328e44c15 [gaim-migrate @ 7683]
Nathan Walp <nwalp@pidgin.im>
parents: 7095
diff changeset
700 g_free, (GDestroyNotify)jabber_buddy_free);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
701 js->chats = g_hash_table_new_full(g_str_hash, g_str_equal,
8396
8681756b4769 [gaim-migrate @ 9125]
Nathan Walp <nwalp@pidgin.im>
parents: 8362
diff changeset
702 g_free, (GDestroyNotify)jabber_chat_free);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
703 js->user = jabber_id_new(purple_account_get_username(account));
7322
de15a9314c04 [gaim-migrate @ 7908]
Nathan Walp <nwalp@pidgin.im>
parents: 7310
diff changeset
704 js->next_id = g_random_int();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
705 js->write_buffer = purple_circ_buffer_new(512);
22111
7b7ed5e93969 Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22101
diff changeset
706 js->old_length = 0;
22096
0d28b254d322 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 <evands@pidgin.im>
parents: 22067
diff changeset
707 js->keepalive_timeout = -1;
23428
852abef162e9 Don't crash if the given jabber id is invalid. For example,
Mark Doliner <markdoliner@pidgin.im>
parents: 23413
diff changeset
708 js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user ? js->user->domain : NULL);
23704
9b88c9b23aed Use USE_VV instead of USE_FARSIGHT.
Michael Ruprecht <maiku@pidgin.im>
parents: 23701
diff changeset
709 #ifdef USE_VV
23698
0815965bd80b Moved jingle.c global variable "sessions" into JabberStream.
Michael Ruprecht <maiku@pidgin.im>
parents: 23697
diff changeset
710 js->sessions = NULL;
0815965bd80b Moved jingle.c global variable "sessions" into JabberStream.
Michael Ruprecht <maiku@pidgin.im>
parents: 23697
diff changeset
711 #endif
5613
df1602bc1e05 [gaim-migrate @ 6019]
Nathan Walp <nwalp@pidgin.im>
parents: 5599
diff changeset
712
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
713 if(!js->user) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
714 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
715 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
716 _("Invalid XMPP ID"));
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
717 return;
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
718 }
17008
502623177086 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@pidgin.im>
parents: 17007
diff changeset
719
502623177086 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@pidgin.im>
parents: 17007
diff changeset
720 if (!js->user->domain || *(js->user->domain) == '\0') {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
721 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
722 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
723 _("Invalid XMPP ID. Domain must be set."));
17008
502623177086 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@pidgin.im>
parents: 17007
diff changeset
724 return;
502623177086 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@pidgin.im>
parents: 17007
diff changeset
725 }
502623177086 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@pidgin.im>
parents: 17007
diff changeset
726
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
727 if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE)))
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
728 my_jb->subscription |= JABBER_SUB_BOTH;
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
729
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
730 jabber_stream_set_state(js, JABBER_STREAM_CONNECTING);
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
731
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
732 /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
733 if(purple_account_get_bool(js->gc->account, "old_ssl", FALSE)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
734 if(purple_ssl_is_supported()) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
735 js->gsc = purple_ssl_connect(js->gc->account,
22155
7c2034388bdb 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 <am@adiumx.com>
parents: 22133
diff changeset
736 js->certificate_CN,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
737 purple_account_get_int(account, "port", 5223), jabber_login_callback_ssl,
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
738 jabber_ssl_connect_failure, js->gc);
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
739 } else {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
740 purple_connection_error_reason (js->gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
741 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
742 _("SSL support unavailable"));
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
743 }
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
744 }
3770
5d476318f306 [gaim-migrate @ 3909]
Sean Egan <seanegan@pidgin.im>
parents: 3769
diff changeset
745
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
746 /* no old-ssl, so if they've specified a connect server, we'll use that, otherwise we'll
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
747 * invoke the magic of SRV lookups, to figure out host and port */
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
748 if(!js->gsc) {
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
749 if(connect_server[0]) {
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
750 jabber_login_connect(js, js->user->domain, connect_server, purple_account_get_int(account, "port", 5222), TRUE);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
751 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
752 js->srv_query_data = purple_srv_resolve("xmpp-client",
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
753 "tcp", js->user->domain, srv_resolved_cb, js);
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
754 }
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
755 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
756 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
757
11387
257041d4ee60 [gaim-migrate @ 13615]
Nathan Walp <nwalp@pidgin.im>
parents: 11257
diff changeset
758
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
759 static gboolean
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
760 conn_close_cb(gpointer data)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
761 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
762 JabberStream *js = data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
763 PurpleAccount *account = purple_connection_get_account(js->gc);
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
764
17810
c8d4297080cb Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents: 17806
diff changeset
765 jabber_parser_free(js);
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
766
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
767 purple_account_disconnect(account);
10740
a1cb6b819a21 [gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents: 10504
diff changeset
768
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
769 return FALSE;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
770 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
771
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
772 static void
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
773 jabber_connection_schedule_close(JabberStream *js)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
774 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
775 purple_timeout_add(0, conn_close_cb, js);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
776 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
777
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
778 static void
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
779 jabber_registration_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
780 {
17814
c47c22006b0d 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 <am@adiumx.com>
parents: 17813
diff changeset
781 PurpleAccount *account = purple_connection_get_account(js->gc);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
782 const char *type = xmlnode_get_attrib(packet, "type");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
783 char *buf;
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
784 char *to = data;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
785
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
786 if(!strcmp(type, "result")) {
17814
c47c22006b0d 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 <am@adiumx.com>
parents: 17813
diff changeset
787 if(js->registration) {
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
788 buf = g_strdup_printf(_("Registration of %s@%s successful"),
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
789 js->user->node, js->user->domain);
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
790 if(account->registration_cb)
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
791 (account->registration_cb)(account, TRUE, account->registration_cb_user_data);
17814
c47c22006b0d 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 <am@adiumx.com>
parents: 17813
diff changeset
792 }
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
793 else
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
794 buf = g_strdup_printf(_("Registration to %s successful"),
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
795 to);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
796 purple_notify_info(NULL, _("Registration Successful"),
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
797 _("Registration Successful"), buf);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
798 g_free(buf);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
799 } else {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
800 char *msg = jabber_parse_error(js, packet, NULL);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
801
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
802 if(!msg)
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
803 msg = g_strdup(_("Unknown Error"));
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
804
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
805 purple_notify_error(NULL, _("Registration Failed"),
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
806 _("Registration Failed"), msg);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
807 g_free(msg);
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
808 if(account->registration_cb)
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
809 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
810 }
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
811 g_free(to);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
812 if(js->registration)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
813 jabber_connection_schedule_close(js);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
814 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
815
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
816 static void
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
817 jabber_unregistration_result_cb(JabberStream *js, xmlnode *packet, gpointer data)
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
818 {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
819 const char *type = xmlnode_get_attrib(packet, "type");
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
820 char *buf;
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
821 char *to = data;
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
822
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
823 if(!strcmp(type, "result")) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
824 buf = g_strdup_printf(_("Registration from %s successfully removed"),
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
825 to);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
826 purple_notify_info(NULL, _("Unregistration Successful"),
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
827 _("Unregistration Successful"), buf);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
828 g_free(buf);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
829 } else {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
830 char *msg = jabber_parse_error(js, packet, NULL);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
831
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
832 if(!msg)
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
833 msg = g_strdup(_("Unknown Error"));
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
834
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
835 purple_notify_error(NULL, _("Unregistration Failed"),
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
836 _("Unregistration Failed"), msg);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
837 g_free(msg);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
838 }
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
839 g_free(to);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
840 }
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
841
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
842 typedef struct _JabberRegisterCBData {
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
843 JabberStream *js;
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
844 char *who;
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
845 } JabberRegisterCBData;
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
846
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
847 static void
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
848 jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
849 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
850 GList *groups, *flds;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
851 xmlnode *query, *y;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
852 JabberIq *iq;
7264
bdb42afa3565 [gaim-migrate @ 7841]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
853 char *username;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
854
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
855 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register");
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
856 query = xmlnode_get_child(iq->node, "query");
21668
3698b848759b The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evands@pidgin.im>
parents: 21667
diff changeset
857 xmlnode_set_attrib(iq->node, "to", cbdata->who);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
858
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
859 for(groups = purple_request_fields_get_groups(fields); groups;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
860 groups = groups->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
861 for(flds = purple_request_field_group_get_fields(groups->data);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
862 flds; flds = flds->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
863 PurpleRequestField *field = flds->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
864 const char *id = purple_request_field_get_id(field);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
865 if(!strcmp(id,"unregister")) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
866 gboolean value = purple_request_field_bool_get_value(field);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
867 if(value) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
868 /* unregister from service. this doesn't include any of the fields, so remove them from the stanza by recreating it
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
869 (there's no "remove child" function for xmlnode) */
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
870 jabber_iq_free(iq);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
871 iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register");
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
872 query = xmlnode_get_child(iq->node, "query");
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
873 xmlnode_set_attrib(iq->node,"to",cbdata->who);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
874 xmlnode_new_child(query, "remove");
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
875
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
876 jabber_iq_set_callback(iq, jabber_unregistration_result_cb, cbdata->who);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
877
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
878 jabber_iq_send(iq);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
879 g_free(cbdata);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
880 return;
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
881 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
882 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
883 const char *value = purple_request_field_string_get_value(field);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
884
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
885 if(!strcmp(id, "username")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
886 y = xmlnode_new_child(query, "username");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
887 } else if(!strcmp(id, "password")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
888 y = xmlnode_new_child(query, "password");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
889 } else if(!strcmp(id, "name")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
890 y = xmlnode_new_child(query, "name");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
891 } else if(!strcmp(id, "email")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
892 y = xmlnode_new_child(query, "email");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
893 } else if(!strcmp(id, "nick")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
894 y = xmlnode_new_child(query, "nick");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
895 } else if(!strcmp(id, "first")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
896 y = xmlnode_new_child(query, "first");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
897 } else if(!strcmp(id, "last")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
898 y = xmlnode_new_child(query, "last");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
899 } else if(!strcmp(id, "address")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
900 y = xmlnode_new_child(query, "address");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
901 } else if(!strcmp(id, "city")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
902 y = xmlnode_new_child(query, "city");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
903 } else if(!strcmp(id, "state")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
904 y = xmlnode_new_child(query, "state");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
905 } else if(!strcmp(id, "zip")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
906 y = xmlnode_new_child(query, "zip");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
907 } else if(!strcmp(id, "phone")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
908 y = xmlnode_new_child(query, "phone");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
909 } else if(!strcmp(id, "url")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
910 y = xmlnode_new_child(query, "url");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
911 } else if(!strcmp(id, "date")) {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
912 y = xmlnode_new_child(query, "date");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
913 } else {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
914 continue;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
915 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
916 xmlnode_insert_data(y, value, -1);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
917 if(cbdata->js->registration && !strcmp(id, "username")) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
918 if(cbdata->js->user->node)
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
919 g_free(cbdata->js->user->node);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
920 cbdata->js->user->node = g_strdup(value);
7264
bdb42afa3565 [gaim-migrate @ 7841]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
921 }
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
922 if(cbdata->js->registration && !strcmp(id, "password"))
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
923 purple_account_set_password(cbdata->js->gc->account, value);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
924 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
925 }
19897
8b5abbdebc87 merge of 'b0586b3697e8044ccd62a369b0c0f9125b2ef732'
Daniel Atallah <datallah@pidgin.im>
parents: 19895 19859
diff changeset
926 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
927
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
928 if(cbdata->js->registration) {
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
929 username = g_strdup_printf("%s@%s/%s", cbdata->js->user->node, cbdata->js->user->domain,
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
930 cbdata->js->user->resource);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
931 purple_account_set_username(cbdata->js->gc->account, username);
21668
3698b848759b The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evands@pidgin.im>
parents: 21667
diff changeset
932 g_free(username);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
933 }
7264
bdb42afa3565 [gaim-migrate @ 7841]
Nathan Walp <nwalp@pidgin.im>
parents: 7261
diff changeset
934
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
935 jabber_iq_set_callback(iq, jabber_registration_result_cb, cbdata->who);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
936
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
937 jabber_iq_send(iq);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
938 g_free(cbdata);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
939 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
940
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
941 static void
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
942 jabber_register_cancel_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
943 {
17814
c47c22006b0d 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 <am@adiumx.com>
parents: 17813
diff changeset
944 PurpleAccount *account = purple_connection_get_account(cbdata->js->gc);
19894
b273d0db2bdd Fixed code indenting, some spaces were still left and now replaced by tabs.
Andreas Monitzer <am@adiumx.com>
parents: 19389
diff changeset
945 if(account && cbdata->js->registration) {
17814
c47c22006b0d 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 <am@adiumx.com>
parents: 17813
diff changeset
946 if(account->registration_cb)
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
947 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
948 jabber_connection_schedule_close(cbdata->js);
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
949 }
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
950 g_free(cbdata->who);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
951 g_free(cbdata);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
952 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
953
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
954 static void jabber_register_x_data_cb(JabberStream *js, xmlnode *result, gpointer data)
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
955 {
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
956 xmlnode *query;
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
957 JabberIq *iq;
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
958 char *to = data;
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
959
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
960 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register");
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
961 query = xmlnode_get_child(iq->node, "query");
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
962 xmlnode_set_attrib(iq->node,"to",to);
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
963
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
964 xmlnode_insert_child(query, result);
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
965
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
966 jabber_iq_set_callback(iq, jabber_registration_result_cb, to);
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
967 jabber_iq_send(iq);
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
968 }
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
969
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
970 void jabber_register_parse(JabberStream *js, xmlnode *packet)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
971 {
17814
c47c22006b0d 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 <am@adiumx.com>
parents: 17813
diff changeset
972 PurpleAccount *account = purple_connection_get_account(js->gc);
14356
7f4abf922cfa [gaim-migrate @ 16984]
Nathan Walp <nwalp@pidgin.im>
parents: 14324
diff changeset
973 const char *type;
21668
3698b848759b The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evands@pidgin.im>
parents: 21667
diff changeset
974 const char *from;
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
975 PurpleRequestFields *fields;
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
976 PurpleRequestFieldGroup *group;
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
977 PurpleRequestField *field;
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
978 xmlnode *query, *x, *y;
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
979 char *instructions;
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
980 JabberRegisterCBData *cbdata;
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
981 gboolean registered = FALSE;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
982
14356
7f4abf922cfa [gaim-migrate @ 16984]
Nathan Walp <nwalp@pidgin.im>
parents: 14324
diff changeset
983 if(!(type = xmlnode_get_attrib(packet, "type")) || strcmp(type, "result"))
7f4abf922cfa [gaim-migrate @ 16984]
Nathan Walp <nwalp@pidgin.im>
parents: 14324
diff changeset
984 return;
7f4abf922cfa [gaim-migrate @ 16984]
Nathan Walp <nwalp@pidgin.im>
parents: 14324
diff changeset
985
21668
3698b848759b The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evands@pidgin.im>
parents: 21667
diff changeset
986 from = xmlnode_get_attrib(packet, "from");
3698b848759b The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evands@pidgin.im>
parents: 21667
diff changeset
987 if (!from)
3698b848759b The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evands@pidgin.im>
parents: 21667
diff changeset
988 from = js->serverFQDN;
3698b848759b The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evands@pidgin.im>
parents: 21667
diff changeset
989 g_return_if_fail(from != NULL);
3698b848759b The Jabber registration process depends upon having a non-NULL cbdata->who,
Evan Schoenberg <evands@pidgin.im>
parents: 21667
diff changeset
990
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
991 if(js->registration) {
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
992 /* get rid of the login thingy */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
993 purple_connection_set_state(js->gc, PURPLE_CONNECTED);
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
994 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
995
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
996 query = xmlnode_get_child(packet, "query");
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
997
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
998 if(xmlnode_get_child(query, "registered")) {
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
999 registered = TRUE;
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1000
17814
c47c22006b0d 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 <am@adiumx.com>
parents: 17813
diff changeset
1001 if(js->registration) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1002 purple_notify_error(NULL, _("Already Registered"),
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1003 _("Already Registered"), NULL);
17814
c47c22006b0d 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 <am@adiumx.com>
parents: 17813
diff changeset
1004 if(account->registration_cb)
17815
232d57a6b6df Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents: 17814
diff changeset
1005 (account->registration_cb)(account, FALSE, account->registration_cb_user_data);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1006 jabber_connection_schedule_close(js);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1007 return;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1008 }
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1009 }
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1010
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1011 if((x = xmlnode_get_child_with_namespace(packet, "x", "jabber:x:data"))) {
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1012 jabber_x_data_request(js, x, jabber_register_x_data_cb, g_strdup(from));
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1013 return;
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1014
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1015 } else if((x = xmlnode_get_child_with_namespace(packet, "x", "jabber:x:oob"))) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1016 xmlnode *url;
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1017
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1018 if((url = xmlnode_get_child(x, "url"))) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1019 char *href;
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1020 if((href = xmlnode_get_data(url))) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1021 purple_notify_uri(NULL, href);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1022 g_free(href);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1023
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1024 if(js->registration) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1025 js->gc->wants_to_die = TRUE;
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1026 if(account->registration_cb) /* succeeded, but we have no login info */
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1027 (account->registration_cb)(account, TRUE, account->registration_cb_user_data);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1028 jabber_connection_schedule_close(js);
8398
dccdcef78405 [gaim-migrate @ 9127]
Nathan Walp <nwalp@pidgin.im>
parents: 8396
diff changeset
1029 }
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1030 return;
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1031 }
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1032 }
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1033 }
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1034
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1035 /* as a last resort, use the old jabber:iq:register syntax */
7923
fd43ed3cda18 [gaim-migrate @ 8592]
Nathan Walp <nwalp@pidgin.im>
parents: 7642
diff changeset
1036
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1037 fields = purple_request_fields_new();
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1038 group = purple_request_field_group_new(NULL);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1039 purple_request_fields_add_group(fields, group);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1040
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1041 if(js->registration)
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1042 field = purple_request_field_string_new("username", _("Username"), js->user->node, FALSE);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1043 else
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1044 field = purple_request_field_string_new("username", _("Username"), NULL, FALSE);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1045
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1046 purple_request_field_group_add_field(group, field);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1047
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1048 if(js->registration)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1049 field = purple_request_field_string_new("password", _("Password"),
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1050 purple_connection_get_password(js->gc), FALSE);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1051 else
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1052 field = purple_request_field_string_new("password", _("Password"), NULL, FALSE);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1053
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1054 purple_request_field_string_set_masked(field, TRUE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1055 purple_request_field_group_add_field(group, field);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1056
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1057 if(xmlnode_get_child(query, "name")) {
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1058 if(js->registration)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1059 field = purple_request_field_string_new("name", _("Name"),
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1060 purple_account_get_alias(js->gc->account), FALSE);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1061 else
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1062 field = purple_request_field_string_new("name", _("Name"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1063 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1064 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1065 if(xmlnode_get_child(query, "email")) {
23325
a374a26fe217 Use "email" and "Email" consistently. This is potentially controversial,
Richard Laager <rlaager@pidgin.im>
parents: 23097
diff changeset
1066 field = purple_request_field_string_new("email", _("Email"), NULL, FALSE);
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1067 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1068 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1069 if(xmlnode_get_child(query, "nick")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1070 field = purple_request_field_string_new("nick", _("Nickname"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1071 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1072 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1073 if(xmlnode_get_child(query, "first")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1074 field = purple_request_field_string_new("first", _("First name"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1075 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1076 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1077 if(xmlnode_get_child(query, "last")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1078 field = purple_request_field_string_new("last", _("Last name"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1079 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1080 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1081 if(xmlnode_get_child(query, "address")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1082 field = purple_request_field_string_new("address", _("Address"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1083 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1084 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1085 if(xmlnode_get_child(query, "city")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1086 field = purple_request_field_string_new("city", _("City"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1087 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1088 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1089 if(xmlnode_get_child(query, "state")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1090 field = purple_request_field_string_new("state", _("State"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1091 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1092 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1093 if(xmlnode_get_child(query, "zip")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1094 field = purple_request_field_string_new("zip", _("Postal code"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1095 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1096 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1097 if(xmlnode_get_child(query, "phone")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1098 field = purple_request_field_string_new("phone", _("Phone"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1099 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1100 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1101 if(xmlnode_get_child(query, "url")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1102 field = purple_request_field_string_new("url", _("URL"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1103 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1104 }
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1105 if(xmlnode_get_child(query, "date")) {
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1106 field = purple_request_field_string_new("date", _("Date"), NULL, FALSE);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1107 purple_request_field_group_add_field(group, field);
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1108 }
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1109 if(registered) {
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1110 field = purple_request_field_bool_new("unregister", _("Unregister"), FALSE);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1111 purple_request_field_group_add_field(group, field);
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1112 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1113
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1114 if((y = xmlnode_get_child(query, "instructions")))
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1115 instructions = xmlnode_get_data(y);
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1116 else if(registered)
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1117 instructions = g_strdup(_("Please fill out the information below "
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1118 "to change your account registration."));
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1119 else
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1120 instructions = g_strdup(_("Please fill out the information below "
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1121 "to register your new account."));
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1122
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1123 cbdata = g_new0(JabberRegisterCBData, 1);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1124 cbdata->js = js;
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1125 cbdata->who = g_strdup(from);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1126
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1127 if(js->registration)
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1128 purple_request_fields(js->gc, _("Register New XMPP Account"),
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16847
diff changeset
1129 _("Register New XMPP Account"), instructions, fields,
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1130 _("Register"), G_CALLBACK(jabber_register_cb),
16490
68c22924d66b 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 <evands@pidgin.im>
parents: 16302
diff changeset
1131 _("Cancel"), G_CALLBACK(jabber_register_cancel_cb),
68c22924d66b 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 <evands@pidgin.im>
parents: 16302
diff changeset
1132 purple_connection_get_account(js->gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1133 cbdata);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1134 else {
18755
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1135 char *title = registered?g_strdup_printf(_("Change Account Registration at %s"), from)
8c4ddce1fb46 Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents: 18718
diff changeset
1136 :g_strdup_printf(_("Register New Account at %s"), from);
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1137 purple_request_fields(js->gc, title,
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1138 title, instructions, fields,
21492
5f6d249bb601 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 <evands@pidgin.im>
parents: 21453
diff changeset
1139 (registered ? _("Change Registration") : _("Register")), G_CALLBACK(jabber_register_cb),
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1140 _("Cancel"), G_CALLBACK(jabber_register_cancel_cb),
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1141 purple_connection_get_account(js->gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1142 cbdata);
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1143 g_free(title);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1144 }
14140
fcb570e0b2db [gaim-migrate @ 16699]
Daniel Atallah <datallah@pidgin.im>
parents: 14115
diff changeset
1145
20320
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1146 g_free(instructions);
6337e101f6ab Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20316
diff changeset
1147 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1148
8016
d75a4e86f7c3 [gaim-migrate @ 8696]
Nathan Walp <nwalp@pidgin.im>
parents: 8013
diff changeset
1149 void jabber_register_start(JabberStream *js)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1150 {
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1151 JabberIq *iq;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1152
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1153 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1154 jabber_iq_send(iq);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1155 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1156
17806
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1157 void jabber_register_gateway(JabberStream *js, const char *gateway) {
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1158 JabberIq *iq;
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1159
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1160 iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register");
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1161 xmlnode_set_attrib(iq->node, "to", gateway);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1162 jabber_iq_send(iq);
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1163 }
ed4647f0915d Added the ability to register gateways, re-using most of the account registration code for this.
Andreas Monitzer <am@adiumx.com>
parents: 17803
diff changeset
1164
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1165 void jabber_register_account(PurpleAccount *account)
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1166 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1167 PurpleConnection *gc = purple_account_get_connection(account);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1168 JabberStream *js;
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
1169 JabberBuddy *my_jb = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1170 const char *connect_server = purple_account_get_string(account,
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1171 "connect_server", "");
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1172 const char *server;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1173
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1174 js = gc->proto_data = g_new0(JabberStream, 1);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1175 js->gc = gc;
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1176 js->registration = TRUE;
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1177 js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1178 g_free, g_free);
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1179 js->disco_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal,
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
1180 g_free, g_free);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1181 js->user = jabber_id_new(purple_account_get_username(account));
7322
de15a9314c04 [gaim-migrate @ 7908]
Nathan Walp <nwalp@pidgin.im>
parents: 7310
diff changeset
1182 js->next_id = g_random_int();
22111
7b7ed5e93969 Fixes for incorrectly displaying user tune emblem and empty current media.
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 22101
diff changeset
1183 js->old_length = 0;
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1184
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1185 if(!js->user) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
1186 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
1187 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
1188 _("Invalid XMPP ID"));
7310
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1189 return;
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1190 }
1346a99cba40 [gaim-migrate @ 7894]
Nathan Walp <nwalp@pidgin.im>
parents: 7291
diff changeset
1191
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1192 js->write_buffer = purple_circ_buffer_new(512);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
1193
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1194 if((my_jb = jabber_buddy_find(js, purple_account_get_username(account), TRUE)))
10289
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
1195 my_jb->subscription |= JABBER_SUB_BOTH;
18f2c2afebaf [gaim-migrate @ 11464]
Nathan Walp <nwalp@pidgin.im>
parents: 10240
diff changeset
1196
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1197 server = connect_server[0] ? connect_server : js->user->domain;
22155
7c2034388bdb 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 <am@adiumx.com>
parents: 22133
diff changeset
1198 js->certificate_CN = g_strdup(server);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1199
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1200 jabber_stream_set_state(js, JABBER_STREAM_CONNECTING);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1201
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1202 if(purple_account_get_bool(account, "old_ssl", FALSE)) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1203 if(purple_ssl_is_supported()) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1204 js->gsc = purple_ssl_connect(account, server,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1205 purple_account_get_int(account, "port", 5222),
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
1206 jabber_login_callback_ssl, jabber_ssl_connect_failure, gc);
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
1207 } else {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
1208 purple_connection_error_reason (gc,
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
1209 PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT,
20445
c900767c024b Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents: 20332
diff changeset
1210 _("SSL support unavailable"));
7630
23e09fd7cbeb [gaim-migrate @ 8254]
Nathan Walp <nwalp@pidgin.im>
parents: 7587
diff changeset
1211 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1212 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1213
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1214 if(!js->gsc) {
15069
c440281daadd [gaim-migrate @ 17788]
Ethan Blanton <elb@pidgin.im>
parents: 15023
diff changeset
1215 if (connect_server[0]) {
17052
b064b8e0244b fix #699
Nathan Walp <nwalp@pidgin.im>
parents: 17008
diff changeset
1216 jabber_login_connect(js, js->user->domain, server,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1217 purple_account_get_int(account,
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1218 "port", 5222), TRUE);
15069
c440281daadd [gaim-migrate @ 17788]
Ethan Blanton <elb@pidgin.im>
parents: 15023
diff changeset
1219 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1220 js->srv_query_data = purple_srv_resolve("xmpp-client",
15069
c440281daadd [gaim-migrate @ 17788]
Ethan Blanton <elb@pidgin.im>
parents: 15023
diff changeset
1221 "tcp",
c440281daadd [gaim-migrate @ 17788]
Ethan Blanton <elb@pidgin.im>
parents: 15023
diff changeset
1222 js->user->domain,
c440281daadd [gaim-migrate @ 17788]
Ethan Blanton <elb@pidgin.im>
parents: 15023
diff changeset
1223 srv_resolved_cb,
c440281daadd [gaim-migrate @ 17788]
Ethan Blanton <elb@pidgin.im>
parents: 15023
diff changeset
1224 js);
c440281daadd [gaim-migrate @ 17788]
Ethan Blanton <elb@pidgin.im>
parents: 15023
diff changeset
1225 }
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1226 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1227 }
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1228
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1229 static void jabber_unregister_account_iq_cb(JabberStream *js, xmlnode *packet, gpointer data) {
18994
310e9d853e2b 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 <am@adiumx.com>
parents: 18993
diff changeset
1230 PurpleAccount *account = purple_connection_get_account(js->gc);
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1231 const char *type = xmlnode_get_attrib(packet,"type");
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1232 if(!strcmp(type,"error")) {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1233 char *msg = jabber_parse_error(js, packet, NULL);
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1234
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1235 purple_notify_error(js->gc, _("Error unregistering account"),
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1236 _("Error unregistering account"), msg);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1237 g_free(msg);
18994
310e9d853e2b 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 <am@adiumx.com>
parents: 18993
diff changeset
1238 if(js->unregistration_cb)
18995
6ba7743720cb Mixed up TRUE and FALSE.
Andreas Monitzer <am@adiumx.com>
parents: 18994
diff changeset
1239 js->unregistration_cb(account, FALSE, js->unregistration_user_data);
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1240 } else if(!strcmp(type,"result")) {
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1241 purple_notify_info(js->gc, _("Account successfully unregistered"),
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1242 _("Account successfully unregistered"), NULL);
18994
310e9d853e2b 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 <am@adiumx.com>
parents: 18993
diff changeset
1243 if(js->unregistration_cb)
18995
6ba7743720cb Mixed up TRUE and FALSE.
Andreas Monitzer <am@adiumx.com>
parents: 18994
diff changeset
1244 js->unregistration_cb(account, TRUE, js->unregistration_user_data);
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1245 }
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1246 }
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1247
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1248 static void jabber_unregister_account_cb(JabberStream *js) {
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1249 JabberIq *iq;
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1250 xmlnode *query;
19994
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1251
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1252 g_return_if_fail(js->unregistration);
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1253
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1254 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register");
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1255
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1256 query = xmlnode_get_child_with_namespace(iq->node, "query", "jabber:iq:register");
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1257
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1258 xmlnode_new_child(query, "remove");
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1259 xmlnode_set_attrib(iq->node, "to", js->user->domain);
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1260
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1261 jabber_iq_set_callback(iq, jabber_unregister_account_iq_cb, NULL);
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1262 jabber_iq_send(iq);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1263 }
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1264
18994
310e9d853e2b 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 <am@adiumx.com>
parents: 18993
diff changeset
1265 void jabber_unregister_account(PurpleAccount *account, PurpleAccountUnregistrationCb cb, void *user_data) {
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1266 PurpleConnection *gc = purple_account_get_connection(account);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1267 JabberStream *js;
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1268
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1269 if(gc->state != PURPLE_CONNECTED) {
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1270 if(gc->state != PURPLE_CONNECTING)
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1271 jabber_login(account);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1272 js = gc->proto_data;
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1273 js->unregistration = TRUE;
18994
310e9d853e2b 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 <am@adiumx.com>
parents: 18993
diff changeset
1274 js->unregistration_cb = cb;
310e9d853e2b 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 <am@adiumx.com>
parents: 18993
diff changeset
1275 js->unregistration_user_data = user_data;
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1276 return;
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1277 }
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1278
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1279 js = gc->proto_data;
19994
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1280
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1281 if (js->unregistration) {
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1282 purple_debug_error("jabber", "Unregistration in process; ignoring duplicate request.\n");
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1283 return;
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1284 }
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1285
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1286 js->unregistration = TRUE;
18994
310e9d853e2b 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 <am@adiumx.com>
parents: 18993
diff changeset
1287 js->unregistration_cb = cb;
310e9d853e2b 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 <am@adiumx.com>
parents: 18993
diff changeset
1288 js->unregistration_user_data = user_data;
19994
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1289
18912
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1290 jabber_unregister_account_cb(js);
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1291 }
606597744812 Added unregistering XMPP accounts. This requires a new prpl-struct entry, but I got an ok for that on the mailing list.
Andreas Monitzer <am@adiumx.com>
parents: 18755
diff changeset
1292
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1293 void jabber_close(PurpleConnection *gc)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1294 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1295 JabberStream *js = gc->proto_data;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1296
23704
9b88c9b23aed Use USE_VV instead of USE_FARSIGHT.
Michael Ruprecht <maiku@pidgin.im>
parents: 23701
diff changeset
1297 #ifdef USE_VV
23717
5a7e463b226d Further decoupled Jingle code from jabber.c:
Michael Ruprecht <maiku@pidgin.im>
parents: 23716
diff changeset
1298 /* Close all of the open Jingle sessions on this stream */
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
1299 jingle_terminate_sessions(js);
23697
299bafcd8eb8 Updates voice and video to use Farsight 2, gets XMPP voice conferences
Michael Ruprecht <maiku@pidgin.im>
parents: 23696
diff changeset
1300 #endif
299bafcd8eb8 Updates voice and video to use Farsight 2, gets XMPP voice conferences
Michael Ruprecht <maiku@pidgin.im>
parents: 23696
diff changeset
1301
14004
ce5ce35df50b [gaim-migrate @ 16478]
Sean Egan <seanegan@pidgin.im>
parents: 14003
diff changeset
1302 /* Don't perform any actions on the ssl connection
ce5ce35df50b [gaim-migrate @ 16478]
Sean Egan <seanegan@pidgin.im>
parents: 14003
diff changeset
1303 * if we were forcibly disconnected because it will crash
ce5ce35df50b [gaim-migrate @ 16478]
Sean Egan <seanegan@pidgin.im>
parents: 14003
diff changeset
1304 * on some SSL backends.
13154
1a93fddf2a9a [gaim-migrate @ 15516]
Evan Schoenberg <evands@pidgin.im>
parents: 13051
diff changeset
1305 */
1a93fddf2a9a [gaim-migrate @ 15516]
Evan Schoenberg <evands@pidgin.im>
parents: 13051
diff changeset
1306 if (!gc->disconnect_timeout)
14003
5fab5dad7ab6 [gaim-migrate @ 16477]
Sean Egan <seanegan@pidgin.im>
parents: 13956
diff changeset
1307 jabber_send_raw(js, "</stream:stream>", -1);
3311
cdbc5795c717 [gaim-migrate @ 3329]
Nathan Walp <nwalp@pidgin.im>
parents: 3260
diff changeset
1308
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
1309 if (js->srv_query_data)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1310 purple_srv_cancel(js->srv_query_data);
14370
12ef3d4096ee [gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents: 14358
diff changeset
1311
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1312 if(js->gsc) {
13243
5a127fc7db90 [gaim-migrate @ 15608]
Evan Schoenberg <evands@pidgin.im>
parents: 13238
diff changeset
1313 #ifdef HAVE_OPENSSL
5a127fc7db90 [gaim-migrate @ 15608]
Evan Schoenberg <evands@pidgin.im>
parents: 13238
diff changeset
1314 if (!gc->disconnect_timeout)
13385
6fb64ae23761 [gaim-migrate @ 15757]
Nathan Walp <nwalp@pidgin.im>
parents: 13297
diff changeset
1315 #endif
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1316 purple_ssl_close(js->gsc);
8360
2976b7f18935 [gaim-migrate @ 9084]
Nathan Walp <nwalp@pidgin.im>
parents: 8312
diff changeset
1317 } else if (js->fd > 0) {
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1318 if(js->gc->inpa)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1319 purple_input_remove(js->gc->inpa);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1320 close(js->fd);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1321 }
15363
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 15344
diff changeset
1322
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 15344
diff changeset
1323 jabber_buddy_remove_all_pending_buddy_info_requests(js);
f6b9d1e3d0cb [gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents: 15344
diff changeset
1324
17810
c8d4297080cb Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents: 17806
diff changeset
1325 jabber_parser_free(js);
c8d4297080cb Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents: 17806
diff changeset
1326
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1327 if(js->iq_callbacks)
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1328 g_hash_table_destroy(js->iq_callbacks);
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1329 if(js->disco_callbacks)
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1330 g_hash_table_destroy(js->disco_callbacks);
7072
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1331 if(js->buddies)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1332 g_hash_table_destroy(js->buddies);
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1333 if(js->chats)
f42abfd8486e [gaim-migrate @ 7637]
Nathan Walp <nwalp@pidgin.im>
parents: 7020
diff changeset
1334 g_hash_table_destroy(js->chats);
21688
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1335
8043
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1336 while(js->chat_servers) {
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1337 g_free(js->chat_servers->data);
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1338 js->chat_servers = g_list_delete_link(js->chat_servers, js->chat_servers);
86a087e9624c [gaim-migrate @ 8727]
Nathan Walp <nwalp@pidgin.im>
parents: 8016
diff changeset
1339 }
21688
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1340
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1341 while(js->user_directories) {
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1342 g_free(js->user_directories->data);
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1343 js->user_directories = g_list_delete_link(js->user_directories, js->user_directories);
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1344 }
21688
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1345
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1346 while(js->bs_proxies) {
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1347 JabberBytestreamsStreamhost *sh = js->bs_proxies->data;
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1348 g_free(sh->jid);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1349 g_free(sh->host);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1350 g_free(sh->zeroconf);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1351 g_free(sh);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1352 js->bs_proxies = g_list_delete_link(js->bs_proxies, js->bs_proxies);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1353 }
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1354
24012
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1355 while(js->url_datas) {
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1356 purple_util_fetch_url_cancel(js->url_datas->data);
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1357 js->url_datas = g_slist_delete_link(js->url_datas, js->url_datas);
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1358 }
913d6f18cb95 Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents: 23911
diff changeset
1359
21688
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1360 g_free(js->stream_id);
7587
57f1a8a3542d [gaim-migrate @ 8205]
Nathan Walp <nwalp@pidgin.im>
parents: 7514
diff changeset
1361 if(js->user)
57f1a8a3542d [gaim-migrate @ 8205]
Nathan Walp <nwalp@pidgin.im>
parents: 7514
diff changeset
1362 jabber_id_free(js->user);
21688
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1363 g_free(js->avatar_hash);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1364
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1365 purple_circ_buffer_destroy(js->write_buffer);
13201
8c224ef70efa [gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents: 13154
diff changeset
1366 if(js->writeh)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1367 purple_input_remove(js->writeh);
12508
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1368 #ifdef HAVE_CYRUS_SASL
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1369 if(js->sasl)
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1370 sasl_dispose(&js->sasl);
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1371 if(js->sasl_mechs)
32f6f8bf3a57 [gaim-migrate @ 14820]
Simon Wilkinson
parents: 12394
diff changeset
1372 g_string_free(js->sasl_mechs, TRUE);
21688
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1373 g_free(js->sasl_cb);
18449
2d2df64f4303 applied changes from f9186fabb483b56a9d7e8fb7241b2520e9930413
William Ehlhardt <williamehlhardt@gmail.com>
parents: 18235
diff changeset
1374 #endif
21688
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1375 g_free(js->serverFQDN);
17817
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1376 while(js->commands) {
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1377 JabberAdHocCommands *cmd = js->commands->data;
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1378 g_free(cmd->jid);
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1379 g_free(cmd->node);
17827
33575af6da8b Fixed copy/paste error.
Andreas Monitzer <am@adiumx.com>
parents: 17824
diff changeset
1380 g_free(cmd->name);
17817
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1381 g_free(cmd);
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1382 js->commands = g_list_delete_link(js->commands, js->commands);
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1383 }
15198
08deb9b51708 [gaim-migrate @ 17922]
Sean Egan <seanegan@pidgin.im>
parents: 15185
diff changeset
1384 g_free(js->server_name);
22155
7c2034388bdb 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 <am@adiumx.com>
parents: 22133
diff changeset
1385 g_free(js->certificate_CN);
15225
d04a059065dd [gaim-migrate @ 17949]
Sean Egan <seanegan@pidgin.im>
parents: 15205
diff changeset
1386 g_free(js->gmail_last_time);
d04a059065dd [gaim-migrate @ 17949]
Sean Egan <seanegan@pidgin.im>
parents: 15205
diff changeset
1387 g_free(js->gmail_last_tid);
21688
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1388 g_free(js->old_msg);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1389 g_free(js->old_avatarhash);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1390 g_free(js->old_artist);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1391 g_free(js->old_title);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1392 g_free(js->old_source);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1393 g_free(js->old_uri);
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1394 g_free(js->old_track);
23097
fd61a293d5e1 patch from Andrew Gaul to fix another memleak
Ka-Hing Cheung <khc@pidgin.im>
parents: 22759
diff changeset
1395 g_free(js->expected_rspauth);
21688
a16385b34219 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 <datallah@pidgin.im>
parents: 21668
diff changeset
1396
22096
0d28b254d322 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 <evands@pidgin.im>
parents: 22067
diff changeset
1397 if (js->keepalive_timeout != -1)
0d28b254d322 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 <evands@pidgin.im>
parents: 22067
diff changeset
1398 purple_timeout_remove(js->keepalive_timeout);
23910
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1399
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1400 g_free(js->srv_rec);
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1401 js->srv_rec = NULL;
f8989c154a60 Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents: 23539
diff changeset
1402
23911
f54fe603e84a Fix a stupid mistake in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents: 23910
diff changeset
1403 g_free(js);
f54fe603e84a Fix a stupid mistake in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents: 23910
diff changeset
1404
11389
c1e05b75b0b0 [gaim-migrate @ 13617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11387
diff changeset
1405 gc->proto_data = NULL;
5093
7761492245e6 [gaim-migrate @ 5455]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
1406 }
7761492245e6 [gaim-migrate @ 5455]
Nathan Walp <nwalp@pidgin.im>
parents: 5068
diff changeset
1407
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1408 void jabber_stream_set_state(JabberStream *js, JabberStreamState state)
3105
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1409 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1410 js->state = state;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1411 switch(state) {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1412 case JABBER_STREAM_OFFLINE:
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1413 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1414 case JABBER_STREAM_CONNECTING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1415 purple_connection_update_progress(js->gc, _("Connecting"), 1,
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1416 JABBER_CONNECT_STEPS);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1417 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1418 case JABBER_STREAM_INITIALIZING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1419 purple_connection_update_progress(js->gc, _("Initializing Stream"),
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1420 js->gsc ? 5 : 2, JABBER_CONNECT_STEPS);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1421 jabber_stream_init(js);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1422 break;
17813
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
1423 case JABBER_STREAM_INITIALIZING_ENCRYPTION:
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
1424 purple_connection_update_progress(js->gc, _("Initializing SSL/TLS"),
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
1425 6, JABBER_CONNECT_STEPS);
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
1426 break;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1427 case JABBER_STREAM_AUTHENTICATING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1428 purple_connection_update_progress(js->gc, _("Authenticating"),
17813
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
1429 js->gsc ? 7 : 3, JABBER_CONNECT_STEPS);
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1430 if(js->protocol_version == JABBER_PROTO_0_9 && js->registration) {
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1431 jabber_register_start(js);
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1432 } else if(js->auth_type == JABBER_AUTH_IQ_AUTH) {
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1433 jabber_auth_start_old(js);
8016
d75a4e86f7c3 [gaim-migrate @ 8696]
Nathan Walp <nwalp@pidgin.im>
parents: 8013
diff changeset
1434 }
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1435 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1436 case JABBER_STREAM_REINITIALIZING:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1437 purple_connection_update_progress(js->gc, _("Re-initializing Stream"),
17813
c5cc8ebf62c0 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 <am@adiumx.com>
parents: 17810
diff changeset
1438 (js->gsc ? 8 : 4), JABBER_CONNECT_STEPS);
16847
cd87fc9c6856 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: 16799
diff changeset
1439
14700
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
1440 /* The stream will be reinitialized later, in jabber_recv_cb_ssl() */
98dc3d9a69e3 [gaim-migrate @ 17384]
Sean Egan <seanegan@pidgin.im>
parents: 14697
diff changeset
1441 js->reinit = TRUE;
16847
cd87fc9c6856 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: 16799
diff changeset
1442
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1443 break;
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1444 case JABBER_STREAM_CONNECTED:
16847
cd87fc9c6856 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: 16799
diff changeset
1445 /* now we can alert the core that we're ready to send status */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1446 purple_connection_set_state(js->gc, PURPLE_CONNECTED);
8312
3cb6d9d94694 [gaim-migrate @ 9036]
Nathan Walp <nwalp@pidgin.im>
parents: 8296
diff changeset
1447 jabber_disco_items_server(js);
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1448 break;
3105
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1449 }
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1450 }
8c23b0ec1036 [gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3074
diff changeset
1451
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1452 char *jabber_get_next_id(JabberStream *js)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1453 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1454 return g_strdup_printf("purple%x", js->next_id++);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1455 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1456
14453
1cc75906700c [gaim-migrate @ 17098]
Mark Doliner <markdoliner@pidgin.im>
parents: 14375
diff changeset
1457
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1458 void jabber_idle_set(PurpleConnection *gc, int idle)
3340
7e59a209931d [gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3337
diff changeset
1459 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1460 JabberStream *js = gc->proto_data;
3340
7e59a209931d [gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3337
diff changeset
1461
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1462 js->idle = idle ? time(NULL) - idle : idle;
3314
12fa45677717 [gaim-migrate @ 3332]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3311
diff changeset
1463 }
12fa45677717 [gaim-migrate @ 3332]
Jim Seymour <jseymour@users.sourceforge.net>
parents: 3311
diff changeset
1464
17783
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
1465 void jabber_add_feature(const char *shortname, const char *namespace, JabberFeatureEnabled cb) {
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
1466 JabberFeature *feat;
19994
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1467
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1468 g_return_if_fail(shortname != NULL);
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1469 g_return_if_fail(namespace != NULL);
854d2a4c99b6 There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents: 19993
diff changeset
1470
17783
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
1471 feat = g_new0(JabberFeature,1);
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1472 feat->shortname = g_strdup(shortname);
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1473 feat->namespace = g_strdup(namespace);
17783
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
1474 feat->is_enabled = cb;
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1475
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1476 /* try to remove just in case it already exists in the list */
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1477 jabber_remove_feature(shortname);
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1478
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1479 jabber_features = g_list_append(jabber_features, feat);
17770
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1480 }
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1481
17773
6956b763b3d1 Implemented adding callbacks for PEP events. Moved the feature list to be application-global instead of per-connection (makes more sense).
Andreas Monitzer <am@adiumx.com>
parents: 17770
diff changeset
1482 void jabber_remove_feature(const char *shortname) {
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1483 GList *feature;
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1484 for(feature = jabber_features; feature; feature = feature->next) {
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1485 JabberFeature *feat = (JabberFeature*)feature->data;
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1486 if(!strcmp(feat->shortname, shortname)) {
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1487 g_free(feat->shortname);
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1488 g_free(feat->namespace);
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1489
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1490 g_free(feature->data);
21623
722e905dd5b5 Fix #3669
Daniel Atallah <datallah@pidgin.im>
parents: 21503
diff changeset
1491 jabber_features = g_list_delete_link(jabber_features, feature);
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1492 break;
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1493 }
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1494 }
17770
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1495 }
e67998927a3c Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents: 17769
diff changeset
1496
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1497 const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b)
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1498 {
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
1499 return "jabber";
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4675
diff changeset
1500 }
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4915
diff changeset
1501
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1502 const char* jabber_list_emblem(PurpleBuddy *b)
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4915
diff changeset
1503 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1504 JabberStream *js;
13486
4ea1a712aaa3 [gaim-migrate @ 15861]
Daniel Atallah <datallah@pidgin.im>
parents: 13385
diff changeset
1505 JabberBuddy *jb = NULL;
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1506
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1507 if(!b->account->gc)
15558
6fb7a0ad8a0b clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15524
diff changeset
1508 return NULL;
6fb7a0ad8a0b clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents: 15524
diff changeset
1509
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1510 js = b->account->gc->proto_data;
13486
4ea1a712aaa3 [gaim-migrate @ 15861]
Daniel Atallah <datallah@pidgin.im>
parents: 13385
diff changeset
1511 if(js)
4ea1a712aaa3 [gaim-migrate @ 15861]
Daniel Atallah <datallah@pidgin.im>
parents: 13385
diff changeset
1512 jb = jabber_buddy_find(js, b->name, FALSE);
5135
fbcfa5df4c5e [gaim-migrate @ 5499]
Nathan Walp <nwalp@pidgin.im>
parents: 5112
diff changeset
1513
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1514 if(!PURPLE_BUDDY_IS_ONLINE(b)) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1515 if(jb && (jb->subscription & JABBER_SUB_PENDING ||
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1516 !(jb->subscription & JABBER_SUB_TO)))
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1517 return "not-authorized";
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1518 }
15524
8f365f9bf660 Emblems in the blist
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
1519 return NULL;
4916
11b8fd3f8ffc [gaim-migrate @ 5250]
Sean Egan <seanegan@pidgin.im>
parents: 4915
diff changeset
1520 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1521
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1522 char *jabber_status_text(PurpleBuddy *b)
2205
68c42ce8eba6 [gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents: 2170
diff changeset
1523 {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1524 char *ret = NULL;
18310
dbc5240f6bf5 Fix a crash when you have an IM window open on a jabber account and the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18235
diff changeset
1525 JabberBuddy *jb = NULL;
dbc5240f6bf5 Fix a crash when you have an IM window open on a jabber account and the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18235
diff changeset
1526
dbc5240f6bf5 Fix a crash when you have an IM window open on a jabber account and the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18235
diff changeset
1527 if (b->account->gc && b->account->gc->proto_data)
dbc5240f6bf5 Fix a crash when you have an IM window open on a jabber account and the
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18235
diff changeset
1528 jb = jabber_buddy_find(b->account->gc->proto_data, b->name, FALSE);
5234
8320a1cb0274 [gaim-migrate @ 5604]
Nathan Walp <nwalp@pidgin.im>
parents: 5223
diff changeset
1529
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1530 if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1531 ret = g_strdup(_("Not Authorized"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1532 } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1533 ret = g_strdup(jb->error_msg);
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1534 } else {
7095
17d2b54254f8 [gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents: 7072
diff changeset
1535 char *stripped;
17d2b54254f8 [gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents: 7072
diff changeset
1536
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1537 if(!(stripped = purple_markup_strip_html(jabber_buddy_get_status_msg(jb)))) {
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1538 PurplePresence *presence = purple_buddy_get_presence(b);
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1539 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1540 PurpleStatus *status = purple_presence_get_status(presence, "tune");
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1541 stripped = g_strdup(purple_status_get_attr_string(status, PURPLE_TUNE_TITLE));
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1542 }
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1543 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1544
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1545 if(stripped) {
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1546 ret = g_markup_escape_text(stripped, -1);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1547 g_free(stripped);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1548 }
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1549 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1550
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1551 return ret;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1552 }
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1553
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1554 void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full)
4744
c3a5a15c01f7 [gaim-migrate @ 5059]
Sean Egan <seanegan@pidgin.im>
parents: 4732
diff changeset
1555 {
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1556 JabberBuddy *jb;
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1557
12970
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12948
diff changeset
1558 g_return_if_fail(b != NULL);
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12948
diff changeset
1559 g_return_if_fail(b->account != NULL);
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12948
diff changeset
1560 g_return_if_fail(b->account->gc != NULL);
c2f3b4dcf711 [gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents: 12948
diff changeset
1561 g_return_if_fail(b->account->gc->proto_data != NULL);
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1562
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1563 jb = jabber_buddy_find(b->account->gc->proto_data, b->name,
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1564 FALSE);
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1565
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
1566 if(jb) {
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1567 JabberBuddyResource *jbr = NULL;
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1568 PurplePresence *presence = purple_buddy_get_presence(b);
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
1569 const char *sub;
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1570 GList *l;
19920
7b0d20da73d0 Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@pidgin.im>
parents: 19897
diff changeset
1571 const char *mood;
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1572
12948
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1573 if (full) {
17780
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
1574 PurpleStatus *status;
23413
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1575
12948
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1576 if(jb->subscription & JABBER_SUB_FROM) {
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1577 if(jb->subscription & JABBER_SUB_TO)
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1578 sub = _("Both");
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1579 else if(jb->subscription & JABBER_SUB_PENDING)
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1580 sub = _("From (To pending)");
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1581 else
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1582 sub = _("From");
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1583 } else {
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1584 if(jb->subscription & JABBER_SUB_TO)
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1585 sub = _("To");
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1586 else if(jb->subscription & JABBER_SUB_PENDING)
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1587 sub = _("None (To pending)");
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1588 else
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1589 sub = _("None");
0867a553ed26 [gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents: 12944
diff changeset
1590 }
23413
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1591
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1592 purple_notify_user_info_add_pair(user_info, _("Subscription"), sub);
23413
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1593
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1594 status = purple_presence_get_active_status(presence);
23413
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1595 mood = purple_status_get_attr_string(status, "mood");
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1596 if(mood != NULL) {
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1597 const char *moodtext;
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1598 moodtext = purple_status_get_attr_string(status, "moodtext");
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1599 if(moodtext != NULL) {
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1600 char *moodplustext = g_strdup_printf("%s (%s)", mood, moodtext);
b0b23ab674f0 The status type says that mood and moodtext are strings, so we don't
Mark Doliner <markdoliner@pidgin.im>
parents: 23325
diff changeset
1601
17780
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
1602 purple_notify_user_info_add_pair(user_info, _("Mood"), moodplustext);
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
1603 g_free(moodplustext);
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
1604 } else
749862fd4a87 Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents: 17779
diff changeset
1605 purple_notify_user_info_add_pair(user_info, _("Mood"), mood);
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1606 }
22133
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
1607 if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) {
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1608 PurpleStatus *tune = purple_presence_get_status(presence, "tune");
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1609 const char *title = purple_status_get_attr_string(tune, PURPLE_TUNE_TITLE);
22133
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
1610 const char *artist = purple_status_get_attr_string(tune, PURPLE_TUNE_ARTIST);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
1611 const char *album = purple_status_get_attr_string(tune, PURPLE_TUNE_ALBUM);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
1612 char *playing = purple_util_format_song_info(title, artist, album, NULL);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
1613 if (playing) {
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
1614 purple_notify_user_info_add_pair(user_info, _("Now Listening"), playing);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
1615 g_free(playing);
6eb22afb9701 Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22111
diff changeset
1616 }
21195
fd63ef5027d7 Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents: 21193
diff changeset
1617 }
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
1618 }
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
1619
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1620 for(l=jb->resources; l; l = l->next) {
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
1621 char *text = NULL;
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1622 char *res = NULL;
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1623 char *label, *value;
12944
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
1624 const char *state;
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1625
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1626 jbr = l->data;
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1627
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
1628 if(jbr->status) {
11646
88222bcf445b [gaim-migrate @ 13924]
Nathan Walp <nwalp@pidgin.im>
parents: 11610
diff changeset
1629 char *tmp;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1630 text = purple_strreplace(jbr->status, "\n", "<br />\n");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1631 tmp = purple_markup_strip_html(text);
11646
88222bcf445b [gaim-migrate @ 13924]
Nathan Walp <nwalp@pidgin.im>
parents: 11610
diff changeset
1632 g_free(text);
88222bcf445b [gaim-migrate @ 13924]
Nathan Walp <nwalp@pidgin.im>
parents: 11610
diff changeset
1633 text = g_markup_escape_text(tmp, -1);
88222bcf445b [gaim-migrate @ 13924]
Nathan Walp <nwalp@pidgin.im>
parents: 11610
diff changeset
1634 g_free(tmp);
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
1635 }
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
1636
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1637 if(jbr->name)
11610
85f0e6e9dc5c [gaim-migrate @ 13881]
Nathan Walp <nwalp@pidgin.im>
parents: 11609
diff changeset
1638 res = g_strdup_printf(" (%s)", jbr->name);
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1639
12944
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
1640 state = jabber_buddy_state_get_name(jbr->state);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1641 if (text != NULL && !purple_utf8_strcasecmp(state, text)) {
12944
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
1642 g_free(text);
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
1643 text = NULL;
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
1644 }
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
1645
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1646 label = g_strdup_printf("%s%s",
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1647 _("Status"), (res ? res : ""));
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1648 value = g_strdup_printf("%s%s%s",
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1649 state,
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1650 (text ? ": " : ""),
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1651 (text ? text : ""));
12944
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
1652
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1653 purple_notify_user_info_add_pair(user_info, label, value);
15205
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1654
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1655 g_free(label);
f642029b2f97 [gaim-migrate @ 17929]
Evan Schoenberg <evands@pidgin.im>
parents: 15198
diff changeset
1656 g_free(value);
12944
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
1657 g_free(text);
da8f60d43d88 [gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents: 12943
diff changeset
1658 g_free(res);
11609
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1659 }
6757f295785e [gaim-migrate @ 13880]
Nathan Walp <nwalp@pidgin.im>
parents: 11569
diff changeset
1660
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1661 if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1662 purple_notify_user_info_add_pair(user_info, _("Error"), jb->error_msg);
8194
bf412cad6608 [gaim-migrate @ 8916]
Nathan Walp <nwalp@pidgin.im>
parents: 8193
diff changeset
1663 }
4745
24867c379d37 [gaim-migrate @ 5060]
Nathan Walp <nwalp@pidgin.im>
parents: 4744
diff changeset
1664 }
4732
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
1665 }
a0857625cadb [gaim-migrate @ 5047]
Nathan Walp <nwalp@pidgin.im>
parents: 4705
diff changeset
1666
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1667 GList *jabber_status_types(PurpleAccount *account)
7014
11471fae7ba0 [gaim-migrate @ 7577]
Nathan Walp <nwalp@pidgin.im>
parents: 6982
diff changeset
1668 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1669 PurpleStatusType *type;
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1670 GList *types = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1671 PurpleValue *priority_value;
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1672
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1673 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1674 purple_value_set_int(priority_value, 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1675 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1676 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_ONLINE),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1677 NULL, TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1678 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1679 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1680 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1681 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
1682 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
17824
52683dfc1f7d Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents: 17823
diff changeset
1683 "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1684 NULL);
9980
ea4241d66fd1 [gaim-migrate @ 10891]
Nathan Walp <nwalp@pidgin.im>
parents: 9954
diff changeset
1685 types = g_list_append(types, type);
ea4241d66fd1 [gaim-migrate @ 10891]
Nathan Walp <nwalp@pidgin.im>
parents: 9954
diff changeset
1686
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1687 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1688 purple_value_set_int(priority_value, 1);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1689 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1690 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_CHAT),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1691 _("Chatty"), TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1692 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1693 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1694 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1695 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
1696 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
17824
52683dfc1f7d Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents: 17823
diff changeset
1697 "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1698 NULL);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1699 types = g_list_append(types, type);
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1700
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1701 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1702 purple_value_set_int(priority_value, 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1703 type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1704 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_AWAY),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1705 NULL, TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1706 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1707 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1708 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1709 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
1710 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
17824
52683dfc1f7d Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents: 17823
diff changeset
1711 "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1712 NULL);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1713 types = g_list_append(types, type);
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1714
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1715 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1716 purple_value_set_int(priority_value, 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1717 type = purple_status_type_new_with_attrs(PURPLE_STATUS_EXTENDED_AWAY,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1718 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_XA),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1719 NULL, TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1720 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1721 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1722 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1723 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
1724 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
17824
52683dfc1f7d Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents: 17823
diff changeset
1725 "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1726 NULL);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1727 types = g_list_append(types, type);
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1728
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1729 priority_value = purple_value_new(PURPLE_TYPE_INT);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1730 purple_value_set_int(priority_value, 0);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1731 type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE,
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1732 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_DND),
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1733 _("Do Not Disturb"), TRUE, TRUE, FALSE,
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1734 "priority", _("Priority"), priority_value,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1735 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1736 "mood", _("Mood"), purple_value_new(PURPLE_TYPE_STRING),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
1737 "moodtext", _("Mood Text"), purple_value_new(PURPLE_TYPE_STRING),
17803
882abe4d932e Implemented XEP-0172: User Nickname, fixed some potential crashers in the other PEP callbacks.
Andreas Monitzer <am@adiumx.com>
parents: 17800
diff changeset
1738 "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING),
17824
52683dfc1f7d Added the option to enable/disable buzz via a status setting. It's default off for the pidgin folks.
Andreas Monitzer <am@adiumx.com>
parents: 17823
diff changeset
1739 "buzz", _("Allow Buzz"), purple_value_new(PURPLE_TYPE_BOOLEAN),
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12554
diff changeset
1740 NULL);
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1741 types = g_list_append(types, type);
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1742
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1743 /*
8166
0a109d9655c7 [gaim-migrate @ 8878]
Nathan Walp <nwalp@pidgin.im>
parents: 8158
diff changeset
1744 if(js->protocol_version == JABBER_PROTO_0_9)
0a109d9655c7 [gaim-migrate @ 8878]
Nathan Walp <nwalp@pidgin.im>
parents: 8158
diff changeset
1745 m = g_list_append(m, _("Invisible"));
10009
8a4fcc043f47 [gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents: 9980
diff changeset
1746 */
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1747
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1748 type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE,
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
1749 jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_UNAVAILABLE),
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
1750 NULL, FALSE, TRUE, FALSE,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1751 "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING),
12658
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
1752 NULL);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
1753 types = g_list_append(types, type);
4aa7a873628d [gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents: 12646
diff changeset
1754
21193
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1755 type = purple_status_type_new_with_attrs(PURPLE_STATUS_TUNE,
24693
9ab5d932ab6c I don't know why we'd want the TUNE status to be saveable.
Richard Laager <rlaager@pidgin.im>
parents: 24430
diff changeset
1756 "tune", NULL, FALSE, TRUE, TRUE,
21193
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1757 PURPLE_TUNE_ARTIST, _("Tune Artist"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1758 PURPLE_TUNE_TITLE, _("Tune Title"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1759 PURPLE_TUNE_ALBUM, _("Tune Album"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1760 PURPLE_TUNE_GENRE, _("Tune Genre"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1761 PURPLE_TUNE_COMMENT, _("Tune Comment"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1762 PURPLE_TUNE_TRACK, _("Tune Track"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1763 PURPLE_TUNE_TIME, _("Tune Time"), purple_value_new(PURPLE_TYPE_INT),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1764 PURPLE_TUNE_YEAR, _("Tune Year"), purple_value_new(PURPLE_TYPE_INT),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1765 PURPLE_TUNE_URL, _("Tune URL"), purple_value_new(PURPLE_TYPE_STRING),
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1766 NULL);
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1767 types = g_list_append(types, type);
e918a1846d03 Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20332
diff changeset
1768
9954
52a14a58a33e [gaim-migrate @ 10851]
Nathan Walp <nwalp@pidgin.im>
parents: 9943
diff changeset
1769 return types;
2086
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1770 }
007508451e2c [gaim-migrate @ 2096]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1771
7395
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
1772 static void
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
1773 jabber_password_change_result_cb(JabberStream *js, xmlnode *packet,
e5595e8e13e4 [gaim-migrate @ 7990]
Nathan Walp <nwalp@pidgin.im>
parents: 7322
diff changeset
1774 gpointer data)
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1775 {
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1776 const char *type;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1777
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1778 type = xmlnode_get_attrib(packet, "type");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1779
9414
d35d704b5b74 [gaim-migrate @ 10229]
Nathan Walp <nwalp@pidgin.im>
parents: 9308
diff changeset
1780 if(type && !strcmp(type, "result")) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1781 purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1782 _("Your password has been changed."));
21129
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
1783
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
1784 purple_account_set_password(js->gc->account, (char *)data);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1785 } else {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1786 char *msg = jabber_parse_error(js, packet, NULL);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1787
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1788 purple_notify_error(js->gc, _("Error changing password"),
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1789 _("Error changing password"), msg);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1790 g_free(msg);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1791 }
21129
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
1792
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
1793 g_free(data);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1794 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1795
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1796 static void jabber_password_change_cb(JabberStream *js,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1797 PurpleRequestFields *fields)
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1798 {
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1799 const char *p1, *p2;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1800 JabberIq *iq;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1801 xmlnode *query, *y;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1802
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1803 p1 = purple_request_fields_get_string(fields, "password1");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1804 p2 = purple_request_fields_get_string(fields, "password2");
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1805
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1806 if(strcmp(p1, p2)) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1807 purple_notify_error(js->gc, NULL, _("New passwords do not match."), NULL);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1808 return;
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1809 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1810
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1811 iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1812
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1813 xmlnode_set_attrib(iq->node, "to", js->user->domain);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1814
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1815 query = xmlnode_get_child(iq->node, "query");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1816
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1817 y = xmlnode_new_child(query, "username");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1818 xmlnode_insert_data(y, js->user->node, -1);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1819 y = xmlnode_new_child(query, "password");
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1820 xmlnode_insert_data(y, p1, -1);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1821
21129
91280f050201 This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 21076
diff changeset
1822 jabber_iq_set_callback(iq, jabber_password_change_result_cb, g_strdup(p1));
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1823
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1824 jabber_iq_send(iq);
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1825 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1826
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1827 static void jabber_password_change(PurplePluginAction *action)
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1828 {
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
1829
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1830 PurpleConnection *gc = (PurpleConnection *) action->context;
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1831 JabberStream *js = gc->proto_data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1832 PurpleRequestFields *fields;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1833 PurpleRequestFieldGroup *group;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1834 PurpleRequestField *field;
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1835
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1836 fields = purple_request_fields_new();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1837 group = purple_request_field_group_new(NULL);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1838 purple_request_fields_add_group(fields, group);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1839
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1840 field = purple_request_field_string_new("password1", _("Password"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1841 "", FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1842 purple_request_field_string_set_masked(field, TRUE);
18381
8192b072afa6 Make password fileds in Jabber's Change Password dialog required. Fixes #1907
Sean Egan <seanegan@pidgin.im>
parents: 18310
diff changeset
1843 purple_request_field_set_required(field, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1844 purple_request_field_group_add_field(group, field);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1845
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1846 field = purple_request_field_string_new("password2", _("Password (again)"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1847 "", FALSE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1848 purple_request_field_string_set_masked(field, TRUE);
18381
8192b072afa6 Make password fileds in Jabber's Change Password dialog required. Fixes #1907
Sean Egan <seanegan@pidgin.im>
parents: 18310
diff changeset
1849 purple_request_field_set_required(field, TRUE);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1850 purple_request_field_group_add_field(group, field);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1851
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1852 purple_request_fields(js->gc, _("Change XMPP Password"),
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16847
diff changeset
1853 _("Change XMPP Password"), _("Please enter your new password"),
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1854 fields, _("OK"), G_CALLBACK(jabber_password_change_cb),
16490
68c22924d66b 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 <evands@pidgin.im>
parents: 16302
diff changeset
1855 _("Cancel"), NULL,
19993
867bd1dfe680 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 <datallah@pidgin.im>
parents: 19920
diff changeset
1856 purple_connection_get_account(gc), NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1857 js);
7124
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1858 }
0cde72d7248c [gaim-migrate @ 7691]
Nathan Walp <nwalp@pidgin.im>
parents: 7116
diff changeset
1859
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1860 GList *jabber_actions(PurplePlugin *plugin, gpointer context)
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1861 {
17782
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
1862 PurpleConnection *gc = (PurpleConnection *) context;
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
1863 JabberStream *js = gc->proto_data;
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1864 GList *m = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1865 PurplePluginAction *act;
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4316
diff changeset
1866
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1867 act = purple_plugin_action_new(_("Set User Info..."),
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12284
diff changeset
1868 jabber_setup_set_info);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
1869 m = g_list_append(m, act);
4333
f4c095774bc2 [gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents: 4316
diff changeset
1870
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1871 /* if (js->protocol_options & CHANGE_PASSWORD) { */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1872 act = purple_plugin_action_new(_("Change Password..."),
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12284
diff changeset
1873 jabber_password_change);
9015
3c27e9074fa2 [gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents: 8993
diff changeset
1874 m = g_list_append(m, act);
8296
089b639ebd8f [gaim-migrate @ 9020]
Nathan Walp <nwalp@pidgin.im>
parents: 8273
diff changeset
1875 /* } */
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1876
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1877 act = purple_plugin_action_new(_("Search for Users..."),
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12284
diff changeset
1878 jabber_user_search_begin);
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1879 m = g_list_append(m, act);
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1880
17783
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
1881 purple_debug_info("jabber", "jabber_actions: have pep: %s\n", js->pep?"YES":"NO");
2687df1ca202 PEP publishing features are now only announced in disco#info when PEP is supported by the server.
Andreas Monitzer <am@adiumx.com>
parents: 17782
diff changeset
1882
17782
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
1883 if(js->pep)
83af68644d0a Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents: 17780
diff changeset
1884 jabber_pep_init_actions(&m);
17817
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1885
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1886 if(js->commands)
8e0f271aab78 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 <am@adiumx.com>
parents: 17815
diff changeset
1887 jabber_adhoc_init_server_commands(js, &m);
11675
0eae965a9098 [gaim-migrate @ 13961]
Nathan Walp <nwalp@pidgin.im>
parents: 11646
diff changeset
1888
2956
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1889 return m;
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1890 }
1836bfe768df [gaim-migrate @ 2969]
Rob Flynn <gaim@robflynn.com>
parents: 2856
diff changeset
1891
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1892 PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name)
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1893 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1894 PurpleBlistNode *gnode, *cnode;
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1895 JabberID *jid;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1896
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1897 if(!(jid = jabber_id_new(name)))
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1898 return NULL;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1899
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1900 for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) {
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1901 for(cnode = gnode->child; cnode; cnode = cnode->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1902 PurpleChat *chat = (PurpleChat*)cnode;
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1903 const char *room, *server;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
1904 if(!PURPLE_BLIST_NODE_IS_CHAT(cnode))
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1905 continue;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1906
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1907 if(chat->account != account)
8011
e9ac8bfe26da [gaim-migrate @ 8691]
Nathan Walp <nwalp@pidgin.im>
parents: 8010
diff changeset
1908 continue;
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1909
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1910 if(!(room = g_hash_table_lookup(chat->components, "room")))
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1911 continue;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1912 if(!(server = g_hash_table_lookup(chat->components, "server")))
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1913 continue;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1914
8158
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8135
diff changeset
1915 if(jid->node && jid->domain &&
a62f04d81823 [gaim-migrate @ 8870]
Nathan Walp <nwalp@pidgin.im>
parents: 8135
diff changeset
1916 !g_utf8_collate(room, jid->node) && !g_utf8_collate(server, jid->domain)) {
7999
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1917 jabber_id_free(jid);
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1918 return chat;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1919 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1920 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1921 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1922 jabber_id_free(jid);
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1923 return NULL;
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1924 }
f3f95e0c956a [gaim-migrate @ 8676]
Nathan Walp <nwalp@pidgin.im>
parents: 7971
diff changeset
1925
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
1926 void jabber_convo_closed(PurpleConnection *gc, const char *who)
8400
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1927 {
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1928 JabberStream *js = gc->proto_data;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1929 JabberID *jid;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1930 JabberBuddy *jb;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1931 JabberBuddyResource *jbr;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1932
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1933 if(!(jid = jabber_id_new(who)))
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1934 return;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1935
23704
9b88c9b23aed Use USE_VV instead of USE_FARSIGHT.
Michael Ruprecht <maiku@pidgin.im>
parents: 23701
diff changeset
1936 #ifdef USE_VV
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
1937 jingle_rtp_terminate_session(js, who);
23697
299bafcd8eb8 Updates voice and video to use Farsight 2, gets XMPP voice conferences
Michael Ruprecht <maiku@pidgin.im>
parents: 23696
diff changeset
1938 #endif
8400
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1939 if((jb = jabber_buddy_find(js, who, TRUE)) &&
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1940 (jbr = jabber_buddy_find_resource(jb, jid->resource))) {
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1941 if(jbr->thread_id) {
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1942 g_free(jbr->thread_id);
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1943 jbr->thread_id = NULL;
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1944 }
15709
b58646e3ce63 Sending XEP 85 'gone' messages
Sean Egan <seanegan@pidgin.im>
parents: 15668
diff changeset
1945 if(jbr->chat_states == JABBER_CHAT_STATES_SUPPORTED)
b58646e3ce63 Sending XEP 85 'gone' messages
Sean Egan <seanegan@pidgin.im>
parents: 15668
diff changeset
1946 jabber_message_conv_closed(js, who);
8400
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1947 }
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1948
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1949 jabber_id_free(jid);
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1950 }
09cd5dba5ca4 [gaim-migrate @ 9129]
Nathan Walp <nwalp@pidgin.im>
parents: 8399
diff changeset
1951
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1952
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1953 char *jabber_parse_error(JabberStream *js,
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1954 xmlnode *packet,
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
1955 PurpleConnectionError *reason)
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1956 {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1957 xmlnode *error;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1958 const char *code = NULL, *text = NULL;
13808
411ee56da344 [gaim-migrate @ 16229]
Sean Egan <seanegan@pidgin.im>
parents: 13806
diff changeset
1959 const char *xmlns = xmlnode_get_namespace(packet);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1960 char *cdata = NULL;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1961
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1962 #define SET_REASON(x) \
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1963 if(reason != NULL) { *reason = x; }
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
1964
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1965 if((error = xmlnode_get_child(packet, "error"))) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1966 cdata = xmlnode_get_data(error);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1967 code = xmlnode_get_attrib(error, "code");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1968
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1969 /* Stanza errors */
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1970 if(xmlnode_get_child(error, "bad-request")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1971 text = _("Bad Request");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1972 } else if(xmlnode_get_child(error, "conflict")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1973 text = _("Conflict");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1974 } else if(xmlnode_get_child(error, "feature-not-implemented")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1975 text = _("Feature Not Implemented");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1976 } else if(xmlnode_get_child(error, "forbidden")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1977 text = _("Forbidden");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1978 } else if(xmlnode_get_child(error, "gone")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1979 text = _("Gone");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1980 } else if(xmlnode_get_child(error, "internal-server-error")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1981 text = _("Internal Server Error");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1982 } else if(xmlnode_get_child(error, "item-not-found")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1983 text = _("Item Not Found");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1984 } else if(xmlnode_get_child(error, "jid-malformed")) {
16961
b6955f946f8f s/Jabber/XMPP in user-visible places.
Richard Laager <rlaager@pidgin.im>
parents: 16847
diff changeset
1985 text = _("Malformed XMPP ID");
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1986 } else if(xmlnode_get_child(error, "not-acceptable")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1987 text = _("Not Acceptable");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1988 } else if(xmlnode_get_child(error, "not-allowed")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1989 text = _("Not Allowed");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1990 } else if(xmlnode_get_child(error, "not-authorized")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1991 text = _("Not Authorized");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1992 } else if(xmlnode_get_child(error, "payment-required")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1993 text = _("Payment Required");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1994 } else if(xmlnode_get_child(error, "recipient-unavailable")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1995 text = _("Recipient Unavailable");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1996 } else if(xmlnode_get_child(error, "redirect")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1997 /* XXX */
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1998 } else if(xmlnode_get_child(error, "registration-required")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
1999 text = _("Registration Required");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2000 } else if(xmlnode_get_child(error, "remote-server-not-found")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2001 text = _("Remote Server Not Found");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2002 } else if(xmlnode_get_child(error, "remote-server-timeout")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2003 text = _("Remote Server Timeout");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2004 } else if(xmlnode_get_child(error, "resource-constraint")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2005 text = _("Server Overloaded");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2006 } else if(xmlnode_get_child(error, "service-unavailable")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2007 text = _("Service Unavailable");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2008 } else if(xmlnode_get_child(error, "subscription-required")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2009 text = _("Subscription Required");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2010 } else if(xmlnode_get_child(error, "unexpected-request")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2011 text = _("Unexpected Request");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2012 } else if(xmlnode_get_child(error, "undefined-condition")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2013 text = _("Unknown Error");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2014 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2015 } else if(xmlns && !strcmp(xmlns, "urn:ietf:params:xml:ns:xmpp-sasl")) {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2016 /* Most common reason can be the default */
21284
69472e4a5458 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents: 21281
diff changeset
2017 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2018 if(xmlnode_get_child(packet, "aborted")) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2019 text = _("Authorization Aborted");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2020 } else if(xmlnode_get_child(packet, "incorrect-encoding")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2021 text = _("Incorrect encoding in authorization");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2022 } else if(xmlnode_get_child(packet, "invalid-authzid")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2023 text = _("Invalid authzid");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2024 } else if(xmlnode_get_child(packet, "invalid-mechanism")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2025 text = _("Invalid Authorization Mechanism");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2026 } else if(xmlnode_get_child(packet, "mechanism-too-weak")) {
21284
69472e4a5458 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents: 21281
diff changeset
2027 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2028 text = _("Authorization mechanism too weak");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2029 } else if(xmlnode_get_child(packet, "not-authorized")) {
21284
69472e4a5458 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents: 21281
diff changeset
2030 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
19993
867bd1dfe680 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 <datallah@pidgin.im>
parents: 19920
diff changeset
2031 /* Clear the pasword if it isn't being saved */
867bd1dfe680 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 <datallah@pidgin.im>
parents: 19920
diff changeset
2032 if (!purple_account_get_remember_password(js->gc->account))
867bd1dfe680 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 <datallah@pidgin.im>
parents: 19920
diff changeset
2033 purple_account_set_password(js->gc->account, NULL);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2034 text = _("Not Authorized");
13806
70aa4bd581e5 [gaim-migrate @ 16223]
Sean Egan <seanegan@pidgin.im>
parents: 13746
diff changeset
2035 } else if(xmlnode_get_child(packet, "temporary-auth-failure")) {
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2036 text = _("Temporary Authentication Failure");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2037 } else {
21284
69472e4a5458 Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents: 21281
diff changeset
2038 SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED);
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2039 text = _("Authentication Failure");
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2040 }
15979
acfbd09bc217 Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <markdoliner@pidgin.im>
parents: 15977
diff changeset
2041 } else if(!strcmp(packet->name, "stream:error") ||
20929
8e72c1d47fbd Make sure that the xmlns isn't null before dereferencing it to fix CID 320.
Daniel Atallah <datallah@pidgin.im>
parents: 20404
diff changeset
2042 (!strcmp(packet->name, "error") && xmlns &&
15980
77057c4f658a Minor code cleanup
Mark Doliner <markdoliner@pidgin.im>
parents: 15979
diff changeset
2043 !strcmp(xmlns, "http://etherx.jabber.org/streams"))) {
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2044 /* Most common reason as default: */
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
2045 SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR);
8402
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2046 if(xmlnode_get_child(packet, "bad-format")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2047 text = _("Bad Format");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2048 } else if(xmlnode_get_child(packet, "bad-namespace-prefix")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2049 text = _("Bad Namespace Prefix");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2050 } else if(xmlnode_get_child(packet, "conflict")) {
21279
40685e1f50ca Rename:
Will Thompson <resiak@pidgin.im>
parents: 21211
diff changeset
2051 SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE);
8402
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2052 text = _("Resource Conflict");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2053 } else if(xmlnode_get_child(packet, "connection-timeout")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2054 text = _("Connection Timeout");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2055 } else if(xmlnode_get_child(packet, "host-gone")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2056 text = _("Host Gone");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2057 } else if(xmlnode_get_child(packet, "host-unknown")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2058 text = _("Host Unknown");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2059 } else if(xmlnode_get_child(packet, "improper-addressing")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2060 text = _("Improper Addressing");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2061 } else if(xmlnode_get_child(packet, "internal-server-error")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2062 text = _("Internal Server Error");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2063 } else if(xmlnode_get_child(packet, "invalid-id")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2064 text = _("Invalid ID");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2065 } else if(xmlnode_get_child(packet, "invalid-namespace")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2066 text = _("Invalid Namespace");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2067 } else if(xmlnode_get_child(packet, "invalid-xml")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2068 text = _("Invalid XML");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2069 } else if(xmlnode_get_child(packet, "nonmatching-hosts")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2070 text = _("Non-matching Hosts");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2071 } else if(xmlnode_get_child(packet, "not-authorized")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2072 text = _("Not Authorized");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2073 } else if(xmlnode_get_child(packet, "policy-violation")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2074 text = _("Policy Violation");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2075 } else if(xmlnode_get_child(packet, "remote-connection-failed")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2076 text = _("Remote Connection Failed");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2077 } else if(xmlnode_get_child(packet, "resource-constraint")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2078 text = _("Resource Constraint");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2079 } else if(xmlnode_get_child(packet, "restricted-xml")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2080 text = _("Restricted XML");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2081 } else if(xmlnode_get_child(packet, "see-other-host")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2082 text = _("See Other Host");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2083 } else if(xmlnode_get_child(packet, "system-shutdown")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2084 text = _("System Shutdown");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2085 } else if(xmlnode_get_child(packet, "undefined-condition")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2086 text = _("Undefined Condition");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2087 } else if(xmlnode_get_child(packet, "unsupported-encoding")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2088 text = _("Unsupported Encoding");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2089 } else if(xmlnode_get_child(packet, "unsupported-stanza-type")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2090 text = _("Unsupported Stanza Type");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2091 } else if(xmlnode_get_child(packet, "unsupported-version")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2092 text = _("Unsupported Version");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2093 } else if(xmlnode_get_child(packet, "xml-not-well-formed")) {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2094 text = _("XML Not Well Formed");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2095 } else {
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2096 text = _("Stream Error");
111951d7c7f4 [gaim-migrate @ 9131]
Nathan Walp <nwalp@pidgin.im>
parents: 8401
diff changeset
2097 }
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2098 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2099
21150
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2100 #undef SET_REASON
bedd1215fb5e Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents: 20882
diff changeset
2101
8401
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2102 if(text || cdata) {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2103 char *ret = g_strdup_printf("%s%s%s", code ? code : "",
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2104 code ? ": " : "", text ? text : cdata);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2105 g_free(cdata);
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2106 return ret;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2107 } else {
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2108 return NULL;
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2109 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2110 }
9fe6cadf2581 [gaim-migrate @ 9130]
Nathan Walp <nwalp@pidgin.im>
parents: 8400
diff changeset
2111
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2112 static PurpleCmdRet jabber_cmd_chat_config(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2113 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2114 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2115 JabberChat *chat = jabber_chat_find_by_conv(conv);
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2116
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2117 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2118 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2119
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2120 jabber_chat_request_room_configure(chat);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2121 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2122 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2123
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2124 static PurpleCmdRet jabber_cmd_chat_register(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2125 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2126 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2127 JabberChat *chat = jabber_chat_find_by_conv(conv);
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2128
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2129 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2130 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2131
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2132 jabber_chat_register(chat);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2133 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2134 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2135
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2136 static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2137 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2138 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2139 JabberChat *chat = jabber_chat_find_by_conv(conv);
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2140
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2141 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2142 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2143
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2144 jabber_chat_change_topic(chat, args ? args[0] : NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2145 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2146 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2147
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2148 static PurpleCmdRet jabber_cmd_chat_nick(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2149 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2150 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2151 JabberChat *chat = jabber_chat_find_by_conv(conv);
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2152
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2153 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2154 return PURPLE_CMD_RET_FAILED;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2155
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2156 jabber_chat_change_nick(chat, args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2157 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2158 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2159
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2160 static PurpleCmdRet jabber_cmd_chat_part(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2161 const char *cmd, char **args, char **error, void *data)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2162 {
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2163 JabberChat *chat = jabber_chat_find_by_conv(conv);
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2164
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2165 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2166 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2167
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2168 jabber_chat_part(chat, args ? args[0] : NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2169 return PURPLE_CMD_RET_OK;
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2170 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2171
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2172 static PurpleCmdRet jabber_cmd_chat_ban(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2173 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2174 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2175 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2176
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2177 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2178 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2179
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2180 if(!jabber_chat_ban_user(chat, args[0], args[1])) {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2181 *error = g_strdup_printf(_("Unable to ban user %s"), args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2182 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2183 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2184
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2185 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2186 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2187
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2188 static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv,
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2189 const char *cmd, char **args, char **error, void *data)
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2190 {
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2191 JabberChat *chat = jabber_chat_find_by_conv(conv);
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2192
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2193 if (!chat || !args || !args[0] || !args[1])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2194 return PURPLE_CMD_RET_FAILED;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2195
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2196 if (strcmp(args[1], "owner") != 0 &&
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2197 strcmp(args[1], "admin") != 0 &&
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2198 strcmp(args[1], "member") != 0 &&
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2199 strcmp(args[1], "outcast") != 0 &&
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2200 strcmp(args[1], "none") != 0) {
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2201 *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[1]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2202 return PURPLE_CMD_RET_FAILED;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2203 }
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2204
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2205 if (!jabber_chat_affiliate_user(chat, args[0], args[1])) {
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2206 *error = g_strdup_printf(_("Unable to affiliate user %s as \"%s\""), args[0], args[1]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2207 return PURPLE_CMD_RET_FAILED;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2208 }
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2209
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2210 return PURPLE_CMD_RET_OK;
11393
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2211 }
71e7a8e33810 [gaim-migrate @ 13623]
Ken Tossell
parents: 11389
diff changeset
2212
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2213 static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv,
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2214 const char *cmd, char **args, char **error, void *data)
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2215 {
19217
ee1aa7e4c462 Fix uninitialized variable access.
Daniel Atallah <datallah@pidgin.im>
parents: 18986
diff changeset
2216 JabberChat *chat = jabber_chat_find_by_conv(conv);
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2217
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2218 if (!chat || !args || !args[0] || !args[1])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2219 return PURPLE_CMD_RET_FAILED;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2220
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2221 if (strcmp(args[1], "moderator") != 0 &&
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2222 strcmp(args[1], "participant") != 0 &&
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2223 strcmp(args[1], "visitor") != 0 &&
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2224 strcmp(args[1], "none") != 0) {
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2225 *error = g_strdup_printf(_("Unknown role: \"%s\""), args[1]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2226 return PURPLE_CMD_RET_FAILED;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2227 }
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2228
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2229 if (!jabber_chat_role_user(chat, args[0], args[1])) {
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2230 *error = g_strdup_printf(_("Unable to set role \"%s\" for user: %s"),
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2231 args[1], args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2232 return PURPLE_CMD_RET_FAILED;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2233 }
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2234
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2235 return PURPLE_CMD_RET_OK;
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2236 }
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2237
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2238 static PurpleCmdRet jabber_cmd_chat_invite(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2239 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2240 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2241 if(!args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2242 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2243
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2244 jabber_chat_invite(purple_conversation_get_gc(conv),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2245 purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), args[1] ? args[1] : "",
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2246 args[0]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2247
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2248 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2249 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2250
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2251 static PurpleCmdRet jabber_cmd_chat_join(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2252 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2253 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2254 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2255 GHashTable *components;
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2256
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2257 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2258 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2259
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2260 components = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2261
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2262 g_hash_table_replace(components, "room", args[0]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2263 g_hash_table_replace(components, "server", chat->server);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2264 g_hash_table_replace(components, "handle", chat->handle);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2265 if(args[1])
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2266 g_hash_table_replace(components, "password", args[1]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2267
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2268 jabber_chat_join(purple_conversation_get_gc(conv), components);
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2269
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2270 g_hash_table_destroy(components);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2271 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2272 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2273
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2274 static PurpleCmdRet jabber_cmd_chat_kick(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2275 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2276 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2277 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2278
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2279 if(!chat || !args || !args[0])
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2280 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2281
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2282 if(!jabber_chat_kick_user(chat, args[0], args[1])) {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2283 *error = g_strdup_printf(_("Unable to kick user %s"), args[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2284 return PURPLE_CMD_RET_FAILED;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2285 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2286
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2287 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2288 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2289
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2290 static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2291 const char *cmd, char **args, char **error, void *data)
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2292 {
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2293 JabberChat *chat = jabber_chat_find_by_conv(conv);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2294 char *who;
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2295
18986
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2296 if (!chat)
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2297 return PURPLE_CMD_RET_FAILED;
5542a465de12 Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents: 18381
diff changeset
2298
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2299 who = g_strdup_printf("%s@%s/%s", chat->room, chat->server, args[0]);
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2300
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2301 jabber_message_send_im(purple_conversation_get_gc(conv), who, args[1], 0);
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2302
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2303 g_free(who);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2304 return PURPLE_CMD_RET_OK;
9152
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2305 }
ff7aaa305cbd [gaim-migrate @ 9936]
Nathan Walp <nwalp@pidgin.im>
parents: 9130
diff changeset
2306
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2307 static PurpleCmdRet jabber_cmd_ping(PurpleConversation *conv,
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2308 const char *cmd, char **args, char **error, void *data)
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2309 {
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2310 if(!args || !args[0])
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2311 return PURPLE_CMD_RET_FAILED;
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2312
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2313 if(!jabber_ping_jid(conv, args[0])) {
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2314 *error = g_strdup_printf(_("Unable to ping user %s"), args[0]);
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2315 return PURPLE_CMD_RET_FAILED;
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2316 }
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2317
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2318 return PURPLE_CMD_RET_OK;
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2319 }
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2320
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2321 static gboolean _jabber_send_buzz(JabberStream *js, const char *username, char **error) {
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2322
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2323 JabberBuddy *jb;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2324 JabberBuddyResource *jbr;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2325 GList *iter;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2326
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2327 if(!username)
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2328 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2329
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2330 jb = jabber_buddy_find(js, username, FALSE);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2331 if(!jb) {
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2332 *error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2333 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2334 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2335
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2336 jbr = jabber_buddy_find_resource(jb, NULL);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2337 if(!jbr) {
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2338 *error = g_strdup_printf(_("Unable to buzz, because user %s might be offline."), username);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2339 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2340 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2341
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2342 if(!jbr->caps) {
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2343 *error = g_strdup_printf(_("Unable to buzz, because there is nothing known about user %s."), username);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2344 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2345 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2346
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2347 for(iter = jbr->caps->features; iter; iter = g_list_next(iter)) {
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2348 if(!strcmp(iter->data, "http://www.xmpp.org/extensions/xep-0224.html#ns")) {
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2349 xmlnode *buzz, *msg = xmlnode_new("message");
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2350 gchar *to;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2351
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2352 to = g_strdup_printf("%s/%s", username, jbr->name);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2353 xmlnode_set_attrib(msg, "to", to);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2354 g_free(to);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2355
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2356 /* avoid offline storage */
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2357 xmlnode_set_attrib(msg, "type", "headline");
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2358
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2359 buzz = xmlnode_new_child(msg, "attention");
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2360 xmlnode_set_namespace(buzz, "http://www.xmpp.org/extensions/xep-0224.html#ns");
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2361
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2362 jabber_send(js, msg);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2363 xmlnode_free(msg);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2364
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2365 return TRUE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2366 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2367 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2368
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2369 *error = g_strdup_printf(_("Unable to buzz, because the user %s does not support it."), username);
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2370 return FALSE;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2371 }
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2372
17822
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2373 static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv,
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2374 const char *cmd, char **args, char **error, void *data)
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2375 {
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2376 JabberStream *js = conv->account->gc->proto_data;
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2377
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2378 if(!args || !args[0])
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2379 return PURPLE_CMD_RET_FAILED;
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2380
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2381 return _jabber_send_buzz(js, args[0], error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED;
17822
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2382 }
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2383
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2384 GList *jabber_attention_types(PurpleAccount *account)
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2385 {
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2386 static GList *types = NULL;
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2387
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2388 if (!types) {
22225
6cd802a8c5ad This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22155
diff changeset
2389 types = g_list_append(types, purple_attention_type_new("Buzz", _("Buzz"),
6cd802a8c5ad This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 22155
diff changeset
2390 _("%s has buzzed you!"), _("Buzzing %s...")));
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2391 }
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2392
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2393 return types;
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2394 }
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2395
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2396 gboolean jabber_send_attention(PurpleConnection *gc, const char *username, guint code)
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2397 {
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2398 JabberStream *js = gc->proto_data;
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2399 gchar *error = NULL;
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2400
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2401 if (!_jabber_send_buzz(js, username, &error)) {
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2402 purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)");
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2403 g_free(error);
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2404 return FALSE;
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2405 }
20930
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2406
bb8c78265f58 Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents: 20929
diff changeset
2407 return TRUE;
20401
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2408 }
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2409
8aaa593a6269 Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents: 20332
diff changeset
2410
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
2411 gboolean jabber_offline_message(const PurpleBuddy *buddy)
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
2412 {
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
2413 return TRUE;
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
2414 }
23704
9b88c9b23aed Use USE_VV instead of USE_FARSIGHT.
Michael Ruprecht <maiku@pidgin.im>
parents: 23701
diff changeset
2415 #ifdef USE_VV
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
2416
23697
299bafcd8eb8 Updates voice and video to use Farsight 2, gets XMPP voice conferences
Michael Ruprecht <maiku@pidgin.im>
parents: 23696
diff changeset
2417 PurpleMedia *
299bafcd8eb8 Updates voice and video to use Farsight 2, gets XMPP voice conferences
Michael Ruprecht <maiku@pidgin.im>
parents: 23696
diff changeset
2418 jabber_initiate_media(PurpleConnection *gc, const char *who,
26108
8d0fd2f195aa Changed PurpleMediaStreamType to PurpleMediaSessionType.
Michael Ruprecht <maiku@pidgin.im>
parents: 26106
diff changeset
2419 PurpleMediaSessionType type)
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
2420 {
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
2421 return jingle_rtp_initiate_media(gc->proto_data, who, type);
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
2422 }
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
2423
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
2424 gboolean jabber_can_do_media(PurpleConnection *gc, const char *who,
26108
8d0fd2f195aa Changed PurpleMediaStreamType to PurpleMediaSessionType.
Michael Ruprecht <maiku@pidgin.im>
parents: 26106
diff changeset
2425 PurpleMediaSessionType type)
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
2426 {
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2427 JabberStream *js = (JabberStream *) gc->proto_data;
23715
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
2428 JabberBuddy *jb;
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
2429
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
2430 if (!js) {
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
2431 purple_debug_error("jabber", "jabber_can_do_media: NULL stream\n");
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
2432 return FALSE;
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
2433 }
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
2434
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
2435 jb = jabber_buddy_find(js, who, FALSE);
0844f5e9ac8e Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents: 23714
diff changeset
2436
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2437 if (!jb) {
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2438 purple_debug_error("jabber", "Could not find buddy\n");
23712
a775dab7e038 Create a proper media menu with options for audio, video, and
Michael Ruprecht <maiku@pidgin.im>
parents: 23710
diff changeset
2439 return FALSE;
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2440 }
26170
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
2441
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
2442 if (!jabber_buddy_has_capability(jb, JINGLE_TRANSPORT_ICEUDP) &&
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
2443 !jabber_buddy_has_capability(jb,
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
2444 JINGLE_TRANSPORT_RAWUDP)) {
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
2445 purple_debug_error("jingle-rtp", "Buddy doesn't support "
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
2446 "the same transport types\n");
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
2447 return FALSE;
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
2448 }
829055c78478 Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents: 26167
diff changeset
2449
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2450 /* XMPP will only support two-way media, AFAIK... */
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2451 if (type == (PURPLE_MEDIA_AUDIO | PURPLE_MEDIA_VIDEO)) {
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2452 purple_debug_info("jabber",
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2453 "Checking audio/video XEP support for %s\n", who);
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
2454 return (jabber_buddy_has_capability(jb, JINGLE_APP_RTP_SUPPORT_AUDIO) ||
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2455 jabber_buddy_has_capability(jb, GTALK_CAP)) &&
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
2456 jabber_buddy_has_capability(jb, JINGLE_APP_RTP_SUPPORT_VIDEO);
23721
15285d082f6c Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Michael Ruprecht <maiku@pidgin.im>
parents: 23720
diff changeset
2457 } else if (type == (PURPLE_MEDIA_AUDIO)) {
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2458 purple_debug_info("jabber",
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2459 "Checking audio XEP support for %s\n", who);
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
2460 return jabber_buddy_has_capability(jb, JINGLE_APP_RTP_SUPPORT_AUDIO) ||
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2461 jabber_buddy_has_capability(jb, GTALK_CAP);
23721
15285d082f6c Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Michael Ruprecht <maiku@pidgin.im>
parents: 23720
diff changeset
2462 } else if (type == (PURPLE_MEDIA_VIDEO)) {
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2463 purple_debug_info("jabber",
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2464 "Checking video XEP support for %s\n", who);
26143
673b6665624d Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents: 26117
diff changeset
2465 return jabber_buddy_has_capability(jb, JINGLE_APP_RTP_SUPPORT_VIDEO);
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2466 }
23721
15285d082f6c Refactored PurpleMedia to make creating audio or video sessions virtually identical. Audio, video, and audio/video sessions now work. Also added videotestsrc to the video plugin preference.
Michael Ruprecht <maiku@pidgin.im>
parents: 23720
diff changeset
2467
23714
a08cf0090382 Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents: 23712
diff changeset
2468 return FALSE;
22648
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
2469 }
e286d795c5f9 Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22646
diff changeset
2470
22075
085f38d188de Fix some compilation problems when USE_FARSIGHT isn't defined.
Evan Schoenberg <evands@pidgin.im>
parents: 22069
diff changeset
2471 #endif
12645
a907ba243930 [gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12600
diff changeset
2472
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
2473 void jabber_register_commands(void)
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2474 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2475 purple_cmd_register("config", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2476 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2477 "prpl-jabber", jabber_cmd_chat_config,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2478 _("config: Configure a chat room."), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2479 purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2480 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2481 "prpl-jabber", jabber_cmd_chat_config,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2482 _("configure: Configure a chat room."), NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2483 purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2484 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2485 "prpl-jabber", jabber_cmd_chat_nick,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2486 _("nick &lt;new nickname&gt;: Change your nickname."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2487 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2488 purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2489 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2490 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2491 jabber_cmd_chat_part, _("part [room]: Leave the room."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2492 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2493 purple_cmd_register("register", "", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2494 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2495 "prpl-jabber", jabber_cmd_chat_register,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2496 _("register: Register with a chat room."), NULL);
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2497 /* XXX: there needs to be a core /topic cmd, methinks */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2498 purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2499 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2500 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2501 jabber_cmd_chat_topic,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2502 _("topic [new topic]: View or change the topic."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2503 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2504 purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2505 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2506 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2507 jabber_cmd_chat_ban,
22759
1ab25e736b3d Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents: 22587
diff changeset
2508 _("ban &lt;user&gt; [reason]: Ban a user from the room."),
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2509 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2510 purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2511 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2512 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2513 jabber_cmd_chat_affiliate,
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2514 _("affiliate &lt;user&gt; &lt;owner|admin|member|outcast|none&gt;: Set a user's affiliation with the room."),
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2515 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2516 purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2517 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2518 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
13238
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2519 jabber_cmd_chat_role,
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2520 _("role &lt;user&gt; &lt;moderator|participant|visitor|none&gt;: Set a user's role in the room."),
b98439d90903 [gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents: 13201
diff changeset
2521 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2522 purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2523 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2524 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2525 jabber_cmd_chat_invite,
11158
2660ab8f8a14 [gaim-migrate @ 13245]
Etan Reisner <deryni@pidgin.im>
parents: 11033
diff changeset
2526 _("invite &lt;user&gt; [message]: Invite a user to the room."),
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2527 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2528 purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2529 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2530 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2531 jabber_cmd_chat_join,
22759
1ab25e736b3d Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents: 22587
diff changeset
2532 _("join: &lt;room&gt; [password]: Join a chat on this server."),
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2533 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2534 purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2535 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY |
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2536 PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber",
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2537 jabber_cmd_chat_kick,
22759
1ab25e736b3d Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents: 22587
diff changeset
2538 _("kick &lt;user&gt; [reason]: Kick a user from the room."),
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2539 NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2540 purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15800
diff changeset
2541 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY,
9597
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2542 "prpl-jabber", jabber_cmd_chat_msg,
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2543 _("msg &lt;user&gt; &lt;message&gt;: Send a private message to another user."),
c6f672b593cb [gaim-migrate @ 10440]
Tim Ringenbach <marv@pidgin.im>
parents: 9475
diff changeset
2544 NULL);
17769
69d98a4da006 applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents: 17768
diff changeset
2545 purple_cmd_register("ping", "w", PURPLE_CMD_P_PRPL,
17779
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2546 PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM |
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2547 PURPLE_CMD_FLAG_PRPL_ONLY,
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2548 "prpl-jabber", jabber_cmd_ping,
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2549 _("ping &lt;jid&gt;: Ping a user/component/server."),
773326802e26 Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents: 17775
diff changeset
2550 NULL);
17822
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2551 purple_cmd_register("buzz", "s", PURPLE_CMD_P_PRPL,
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2552 PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY,
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2553 "prpl-jabber", jabber_cmd_buzz,
1a183f3fa9d7 disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents: 17821
diff changeset
2554 _("buzz: Buzz a user to get their attention"), NULL);
9130
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2555 }
2e67295dd047 [gaim-migrate @ 9908]
Nathan Walp <nwalp@pidgin.im>
parents: 9030
diff changeset
2556
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
2557 void
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
2558 jabber_init_plugin(PurplePlugin *plugin)
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
2559 {
16302
eb633ebf84f2 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@pidgin.im>
parents: 16180
diff changeset
2560 my_protocol = plugin;
14358
aaaca5a49c92 [gaim-migrate @ 16986]
Ian Goldberg
parents: 14356
diff changeset
2561 }

mercurial