Sat, 14 Aug 2010 04:39:07 +0000
< QuLogic> on line 208 of jabber.c, should that be *dot?
< darkrain42> Looks like it to me.
| 2086 | 1 | /* |
| 15884 | 2 | * purple - Jabber Protocol Plugin |
| 2086 | 3 | * |
|
28322
ac8fec1d2234
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents:
28266
diff
changeset
|
4 | * Purple is the legal property of its developers, whose names are too numerous |
|
ac8fec1d2234
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents:
28266
diff
changeset
|
5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
ac8fec1d2234
Remove specific copyright lines from the XMPP prpl.
Paul Aurich <darkrain42@pidgin.im>
parents:
28266
diff
changeset
|
6 | * source distribution. |
| 2086 | 7 | * |
| 8 | * This program is free software; you can redistribute it and/or modify | |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 7014 | 12 | * |
| 2086 | 13 | * This program is distributed in the hope that it will be useful, |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 19 | * 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
|
20 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 2086 | 21 | * |
| 22 | */ | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5685
diff
changeset
|
23 | #include "internal.h" |
|
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5685
diff
changeset
|
24 | |
| 7014 | 25 | #include "account.h" |
| 26 | #include "accountopt.h" | |
|
9030
7b574a641391
[gaim-migrate @ 9806]
Mark Doliner <markdoliner@pidgin.im>
parents:
9015
diff
changeset
|
27 | #include "blist.h" |
|
27286
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
28 | #include "core.h" |
| 9130 | 29 | #include "cmds.h" |
|
10740
a1cb6b819a21
[gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents:
10504
diff
changeset
|
30 | #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
|
31 | #include "conversation.h" |
| 7014 | 32 | #include "debug.h" |
| 11387 | 33 | #include "dnssrv.h" |
|
25477
ada9e5c4a10a
Only (re)publish XMPP avatars at login if the server's avatar differs
Paul Aurich <darkrain42@pidgin.im>
parents:
25328
diff
changeset
|
34 | #include "imgstore.h" |
| 7014 | 35 | #include "message.h" |
| 7072 | 36 | #include "notify.h" |
| 8713 | 37 | #include "pluginpref.h" |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
38 | #include "privacy.h" |
|
14175
2bc5a80c5071
[gaim-migrate @ 16747]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
39 | #include "proxy.h" |
| 7014 | 40 | #include "prpl.h" |
| 7072 | 41 | #include "request.h" |
| 7014 | 42 | #include "server.h" |
|
25532
10e7f850b235
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents:
25531
diff
changeset
|
43 | #include "status.h" |
|
7095
17d2b54254f8
[gaim-migrate @ 7660]
Christian Hammond <chipx86@chipx86.com>
parents:
7072
diff
changeset
|
44 | #include "util.h" |
| 9943 | 45 | #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
|
46 | #include "xmlnode.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5685
diff
changeset
|
47 | |
| 7014 | 48 | #include "auth.h" |
| 49 | #include "buddy.h" | |
|
26072
e8fce2b2b9fe
propagate from branch 'im.pidgin.pidgin' (head b4bbfacd7f2050d87deeda12ea7bb3adc3608cb7)
Paul Aurich <darkrain42@pidgin.im>
diff
changeset
|
50 | #include "caps.h" |
| 7014 | 51 | #include "chat.h" |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23325
diff
changeset
|
52 | #include "data.h" |
| 8312 | 53 | #include "disco.h" |
| 15265 | 54 | #include "google.h" |
|
28879
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
55 | #include "ibb.h" |
| 7014 | 56 | #include "iq.h" |
| 57 | #include "jutil.h" | |
| 58 | #include "message.h" | |
| 59 | #include "parser.h" | |
| 60 | #include "presence.h" | |
| 61 | #include "jabber.h" | |
| 62 | #include "roster.h" | |
|
17769
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
63 | #include "ping.h" |
|
9466
b6425eab60ca
[gaim-migrate @ 10291]
Daniel Atallah <datallah@pidgin.im>
parents:
9414
diff
changeset
|
64 | #include "si.h" |
|
29412
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
65 | #include "usermood.h" |
| 7923 | 66 | #include "xdata.h" |
|
17768
7be011945a1b
added preliminary frame for pep-support
Andreas Monitzer <am@adiumx.com>
parents:
17767
diff
changeset
|
67 | #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
|
68 | #include "adhoccommands.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5685
diff
changeset
|
69 | |
|
26143
673b6665624d
Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents:
26117
diff
changeset
|
70 | #include "jingle/jingle.h" |
|
673b6665624d
Restructure Jingle code to more easily support multiple application types.
Michael Ruprecht <maiku@pidgin.im>
parents:
26117
diff
changeset
|
71 | #include "jingle/rtp.h" |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23325
diff
changeset
|
72 | |
|
29771
b276f3e127af
jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents:
29749
diff
changeset
|
73 | #define PING_TIMEOUT 60 |
|
30056
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
74 | /* Send a whitespace keepalive to the server if we haven't sent |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
75 | * anything in the last 120 seconds |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
76 | */ |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
77 | #define DEFAULT_INACTIVITY_TIME 120 |
|
29771
b276f3e127af
jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents:
29749
diff
changeset
|
78 | |
| 21623 | 79 | GList *jabber_features = NULL; |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
80 | GList *jabber_identities = NULL; |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
81 | |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
82 | static GHashTable *jabber_cmds = NULL; /* PurplePlugin * => GSList of ids */ |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
83 | |
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
84 | static gint plugin_ref = 0; |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
85 | |
|
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
|
86 | 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
|
87 | static void try_srv_connect(JabberStream *js); |
|
4249
62583b5d3663
[gaim-migrate @ 4499]
Robert McQueen <robot101@debian.org>
parents:
4245
diff
changeset
|
88 | |
| 7014 | 89 | static void jabber_stream_init(JabberStream *js) |
| 90 | { | |
| 91 | char *open_stream; | |
|
3340
7e59a209931d
[gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3337
diff
changeset
|
92 | |
|
29865
3a23d291568e
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents:
29864
diff
changeset
|
93 | if (js->stream_id) { |
|
3a23d291568e
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents:
29864
diff
changeset
|
94 | g_free(js->stream_id); |
|
3a23d291568e
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents:
29864
diff
changeset
|
95 | js->stream_id = NULL; |
|
3a23d291568e
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents:
29864
diff
changeset
|
96 | } |
|
3a23d291568e
jabber: Clear the stream header when restarting a stream, and be
Paul Aurich <darkrain42@pidgin.im>
parents:
29864
diff
changeset
|
97 | |
| 7014 | 98 | open_stream = g_strdup_printf("<stream:stream to='%s' " |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
99 | "xmlns='" NS_XMPP_CLIENT "' " |
|
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
100 | "xmlns:stream='" NS_XMPP_STREAMS "' " |
| 7395 | 101 | "version='1.0'>", |
| 7291 | 102 | js->user->domain); |
| 13808 | 103 | /* setup the parser fresh for each stream */ |
| 104 | jabber_parser_setup(js); | |
| 7642 | 105 | jabber_send_raw(js, open_stream, -1); |
| 14062 | 106 | js->reinit = FALSE; |
| 7014 | 107 | g_free(open_stream); |
| 2086 | 108 | } |
| 109 | ||
| 7395 | 110 | static void |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
111 | jabber_session_initialized_cb(JabberStream *js, const char *from, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
112 | JabberIqType type, const char *id, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
113 | xmlnode *packet, gpointer data) |
| 3311 | 114 | { |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
115 | if (type == JABBER_IQ_RESULT) { |
|
25799
f2b56ff62042
Wait until receiving the roster to tell the core we're logged in
Paul Aurich <darkrain42@pidgin.im>
parents:
25798
diff
changeset
|
116 | jabber_disco_items_server(js); |
|
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
|
117 | 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
|
118 | jabber_unregister_account_cb(js); |
| 7014 | 119 | } else { |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
120 | purple_connection_error_reason(js->gc, |
| 21279 | 121 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
20445
c900767c024b
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents:
20332
diff
changeset
|
122 | ("Error initializing session")); |
| 3311 | 123 | } |
| 124 | } | |
| 125 | ||
| 7014 | 126 | static void jabber_session_init(JabberStream *js) |
| 3311 | 127 | { |
| 7014 | 128 | JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET); |
| 129 | xmlnode *session; | |
| 3311 | 130 | |
| 7395 | 131 | jabber_iq_set_callback(iq, jabber_session_initialized_cb, NULL); |
| 3311 | 132 | |
| 7014 | 133 | session = xmlnode_new_child(iq->node, "session"); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
134 | xmlnode_set_namespace(session, NS_XMPP_SESSION); |
| 3311 | 135 | |
| 7014 | 136 | jabber_iq_send(iq); |
| 3311 | 137 | } |
| 138 | ||
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
139 | static void jabber_bind_result_cb(JabberStream *js, const char *from, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
140 | JabberIqType type, const char *id, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
141 | xmlnode *packet, gpointer data) |
| 7395 | 142 | { |
| 8401 | 143 | xmlnode *bind; |
| 144 | ||
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
145 | if (type == JABBER_IQ_RESULT && |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
146 | (bind = xmlnode_get_child_with_namespace(packet, "bind", NS_XMPP_BIND))) { |
| 8401 | 147 | xmlnode *jid; |
| 148 | char *full_jid; | |
| 149 | if((jid = xmlnode_get_child(bind, "jid")) && (full_jid = xmlnode_get_data(jid))) { | |
| 150 | jabber_id_free(js->user); | |
|
28070
df31e9d5ad88
jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents:
28064
diff
changeset
|
151 | |
|
df31e9d5ad88
jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents:
28064
diff
changeset
|
152 | js->user = jabber_id_new(full_jid); |
|
df31e9d5ad88
jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents:
28064
diff
changeset
|
153 | if (js->user == NULL) { |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
154 | purple_connection_error_reason(js->gc, |
| 21279 | 155 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
156 | _("Invalid response from server")); |
|
28070
df31e9d5ad88
jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents:
28064
diff
changeset
|
157 | g_free(full_jid); |
|
df31e9d5ad88
jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents:
28064
diff
changeset
|
158 | return; |
| 8401 | 159 | } |
|
28070
df31e9d5ad88
jabber: Stop fall-through on connection error.
Paul Aurich <darkrain42@pidgin.im>
parents:
28064
diff
changeset
|
160 | |
|
28071
a0706162fefd
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents:
28070
diff
changeset
|
161 | js->user_jb = jabber_buddy_find(js, full_jid, TRUE); |
|
a0706162fefd
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents:
28070
diff
changeset
|
162 | js->user_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
|
163 | |
|
77ba88ca54a6
Set the connection display name to the server-assigned full jid for XMPP
Daniel Atallah <datallah@pidgin.im>
parents:
24254
diff
changeset
|
164 | 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
|
165 | |
|
10504
eae130eefbfe
[gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10490
diff
changeset
|
166 | g_free(full_jid); |
| 8401 | 167 | } |
| 168 | } else { | |
| 21279 | 169 | 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
|
170 | char *msg = jabber_parse_error(js, packet, &reason); |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
171 | purple_connection_error_reason(js->gc, reason, msg); |
| 8401 | 172 | g_free(msg); |
|
30013
e9b97a2ae2a6
jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <darkrain42@pidgin.im>
parents:
29979
diff
changeset
|
173 | |
|
e9b97a2ae2a6
jabber: If binding fails, don't continue trying to initialize the session.
Paul Aurich <darkrain42@pidgin.im>
parents:
29979
diff
changeset
|
174 | return; |
| 8401 | 175 | } |
| 7395 | 176 | |
| 177 | jabber_session_init(js); | |
| 178 | } | |
| 179 | ||
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
180 | static char *jabber_prep_resource(char *input) { |
|
25600
251e085b3cfa
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents:
25573
diff
changeset
|
181 | char hostname[256], /* current hostname */ |
|
251e085b3cfa
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents:
25573
diff
changeset
|
182 | *dot = NULL; |
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
183 | |
|
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
184 | /* Empty resource == don't send any */ |
|
25304
75bdc442f70c
Slightly modified version of a fix fqueze proposed for a crash with the empty
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
25290
diff
changeset
|
185 | if (input == NULL || *input == '\0') |
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
186 | return NULL; |
|
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
187 | |
|
24833
d2257d9b0ffa
Avoid needlessly calling gethostname() if __HOSTNAME__ doesn't appear in the
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
24828
diff
changeset
|
188 | if (strstr(input, "__HOSTNAME__") == NULL) |
| 24850 | 189 | 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
|
190 | |
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
191 | /* Replace __HOSTNAME__ with hostname */ |
|
24824
2da1f210b9a2
me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents:
24820
diff
changeset
|
192 | if (gethostname(hostname, sizeof(hostname) - 1)) { |
|
2da1f210b9a2
me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents:
24820
diff
changeset
|
193 | 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
|
194 | /* 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
|
195 | 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
|
196 | 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
|
197 | 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
|
198 | instead |
|
2da1f210b9a2
me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents:
24820
diff
changeset
|
199 | */ |
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
200 | strcpy(hostname, "localhost"); |
|
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
201 | } |
|
24824
2da1f210b9a2
me likes this better, References #5565
Ka-Hing Cheung <khc@pidgin.im>
parents:
24820
diff
changeset
|
202 | hostname[sizeof(hostname) - 1] = '\0'; |
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
203 | |
|
25600
251e085b3cfa
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents:
25573
diff
changeset
|
204 | /* We want only the short hostname, not the FQDN - this will prevent the |
|
251e085b3cfa
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents:
25573
diff
changeset
|
205 | * resource string from being unreasonably long on systems which stuff the |
|
251e085b3cfa
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents:
25573
diff
changeset
|
206 | * whole FQDN in the hostname */ |
|
251e085b3cfa
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents:
25573
diff
changeset
|
207 | if((dot = strchr(hostname, '.'))) |
|
30687
93133347cbcf
< QuLogic> on line 208 of jabber.c, should that be *dot?
Paul Aurich <darkrain42@pidgin.im>
parents:
30587
diff
changeset
|
208 | *dot = '\0'; |
|
25600
251e085b3cfa
Grab only the "short" hostname on systems (like Fedora/RedHat, but others too)
Matěj Cepl <mcepl@redhat.com>
parents:
25573
diff
changeset
|
209 | |
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
210 | return purple_strreplace(input, "__HOSTNAME__", hostname); |
|
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
211 | } |
|
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
212 | |
|
30156
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
213 | static gboolean |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
214 | jabber_process_starttls(JabberStream *js, xmlnode *packet) |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
215 | { |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
216 | PurpleAccount *account; |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
217 | xmlnode *starttls; |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
218 | |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
219 | account = purple_connection_get_account(js->gc); |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
220 | |
|
30458
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
221 | if(purple_ssl_is_supported()) { |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
222 | jabber_send_raw(js, |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
223 | "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>", -1); |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
224 | return TRUE; |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
225 | } |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
226 | |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
227 | starttls = xmlnode_get_child(packet, "starttls"); |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
228 | if(xmlnode_get_child(starttls, "required")) { |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
229 | purple_connection_error_reason(js->gc, |
|
30156
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
230 | PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
231 | _("Server requires TLS/SSL, but no TLS/SSL support was found.")); |
|
30458
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
232 | return TRUE; |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
233 | } |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
234 | |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
235 | if(purple_account_get_bool(account, "require_tls", JABBER_DEFAULT_REQUIRE_TLS)) { |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
236 | purple_connection_error_reason(js->gc, |
|
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
237 | PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
|
30156
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
238 | _("You require encryption, but no TLS/SSL support was found.")); |
|
30458
66c86178c6fc
We've already checked for the existance of the starttls node, so we know
Mark Doliner <markdoliner@pidgin.im>
parents:
30448
diff
changeset
|
239 | return TRUE; |
|
30156
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
240 | } |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
241 | |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
242 | return FALSE; |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
243 | } |
|
6ec7dbe44c83
jabber: I never understood why this was in auth.c anyway...
Paul Aurich <darkrain42@pidgin.im>
parents:
30155
diff
changeset
|
244 | |
|
23618
8497c2f5e62d
* using libpurple's internal SASL mechanisms during BOSH authentication phase
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23613
diff
changeset
|
245 | void jabber_stream_features_parse(JabberStream *js, xmlnode *packet) |
| 7395 | 246 | { |
| 8296 | 247 | if(xmlnode_get_child(packet, "starttls")) { |
|
28623
4f7f9d7bb23d
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
28610
diff
changeset
|
248 | if(jabber_process_starttls(js, packet)) { |
|
4f7f9d7bb23d
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
28610
diff
changeset
|
249 | jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION); |
| 8296 | 250 | return; |
|
28623
4f7f9d7bb23d
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
28610
diff
changeset
|
251 | } |
|
28830
7d2ea52db354
jabber: Fix a few places where the default for require_tls was wrong.
Paul Aurich <darkrain42@pidgin.im>
parents:
28828
diff
changeset
|
252 | } else if(purple_account_get_bool(js->gc->account, "require_tls", JABBER_DEFAULT_REQUIRE_TLS) && !jabber_stream_is_ssl(js)) { |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
253 | purple_connection_error_reason(js->gc, |
| 21279 | 254 | PURPLE_CONNECTION_ERROR_ENCRYPTION_ERROR, |
|
20445
c900767c024b
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents:
20332
diff
changeset
|
255 | _("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
|
256 | return; |
| 8296 | 257 | } |
| 258 | ||
| 10988 | 259 | if(js->registration) { |
| 260 | jabber_register_start(js); | |
| 261 | } else if(xmlnode_get_child(packet, "mechanisms")) { | |
|
28623
4f7f9d7bb23d
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
28610
diff
changeset
|
262 | jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING); |
| 7395 | 263 | jabber_auth_start(js, packet); |
| 264 | } else if(xmlnode_get_child(packet, "bind")) { | |
| 265 | xmlnode *bind, *resource; | |
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
266 | char *requested_resource; |
| 7395 | 267 | JabberIq *iq = jabber_iq_new(js, JABBER_IQ_SET); |
| 268 | bind = xmlnode_new_child(iq->node, "bind"); | |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
269 | xmlnode_set_namespace(bind, NS_XMPP_BIND); |
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
270 | requested_resource = jabber_prep_resource(js->user->resource); |
|
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
271 | |
|
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
272 | if (requested_resource != NULL) { |
|
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
273 | resource = xmlnode_new_child(bind, "resource"); |
|
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
274 | xmlnode_insert_data(resource, requested_resource, -1); |
|
25087
b26db53e5b66
Use g_free instead of free.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24850
diff
changeset
|
275 | g_free(requested_resource); |
|
24819
95e726e2bc06
Some improvements to XMPP resource handling:
Jonathan Sailor <jsailor@jesnetplus.com>
parents:
24693
diff
changeset
|
276 | } |
| 7395 | 277 | |
| 278 | jabber_iq_set_callback(iq, jabber_bind_result_cb, NULL); | |
| 279 | ||
| 280 | jabber_iq_send(iq); | |
|
29096
362b96f6f3da
jabber: Roster Versioning support.
Paul Aurich <darkrain42@pidgin.im>
parents:
29094
diff
changeset
|
281 | } else if (xmlnode_get_child_with_namespace(packet, "ver", NS_ROSTER_VERSIONING)) { |
|
362b96f6f3da
jabber: Roster Versioning support.
Paul Aurich <darkrain42@pidgin.im>
parents:
29094
diff
changeset
|
282 | js->server_caps |= JABBER_CAP_ROSTER_VERSIONING; |
| 8296 | 283 | } else /* if(xmlnode_get_child_with_namespace(packet, "auth")) */ { |
| 284 | /* If we get an empty stream:features packet, or we explicitly get | |
| 285 | * an auth feature with namespace http://jabber.org/features/iq-auth | |
| 286 | * we should revert back to iq:auth authentication, even though we're | |
| 287 | * connecting to an XMPP server. */ | |
| 288 | jabber_stream_set_state(js, JABBER_STREAM_AUTHENTICATING); | |
|
28855
c5bc85f9c00e
jabber: Factor the SASL auth methods into their own files.
Paul Aurich <darkrain42@pidgin.im>
parents:
28832
diff
changeset
|
289 | jabber_auth_start_old(js); |
| 7395 | 290 | } |
| 291 | } | |
| 292 | ||
| 7014 | 293 | static void jabber_stream_handle_error(JabberStream *js, xmlnode *packet) |
| 3311 | 294 | { |
| 21279 | 295 | 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
|
296 | char *msg = jabber_parse_error(js, packet, &reason); |
| 3311 | 297 | |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
298 | purple_connection_error_reason(js->gc, reason, msg); |
|
21150
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
299 | |
| 8401 | 300 | g_free(msg); |
| 2086 | 301 | } |
| 302 | ||
| 7014 | 303 | static void tls_init(JabberStream *js); |
| 2086 | 304 | |
|
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
|
305 | void jabber_process_packet(JabberStream *js, xmlnode **packet) |
| 2086 | 306 | { |
|
29864
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
307 | const char *name; |
| 15980 | 308 | const char *xmlns; |
| 309 | ||
|
28832
4e4b609b85e4
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <darkrain42@pidgin.im>
parents:
28830
diff
changeset
|
310 | purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-receiving-xmlnode", js->gc, packet); |
| 14358 | 311 | |
| 312 | /* 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
|
313 | if(NULL == *packet) |
| 14358 | 314 | return; |
| 315 | ||
|
29864
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
316 | name = (*packet)->name; |
|
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
|
317 | xmlns = xmlnode_get_namespace(*packet); |
| 15980 | 318 | |
|
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
|
319 | 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
|
320 | 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
|
321 | } 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
|
322 | 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
|
323 | } 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
|
324 | jabber_message_parse(js, *packet); |
|
29864
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
325 | } else if (purple_strequal(xmlns, NS_XMPP_STREAMS)) { |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
326 | if (g_str_equal(name, "features")) |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
327 | jabber_stream_features_parse(js, *packet); |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
328 | else if (g_str_equal(name, "error")) |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
329 | jabber_stream_handle_error(js, *packet); |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
330 | } else if (purple_strequal(xmlns, NS_XMPP_SASL)) { |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
331 | if (js->state != JABBER_STREAM_AUTHENTICATING) |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
332 | purple_debug_warning("jabber", "Ignoring spurious SASL stanza %s\n", name); |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
333 | else { |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
334 | if (g_str_equal(name, "challenge")) |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
335 | jabber_auth_handle_challenge(js, *packet); |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
336 | else if (g_str_equal(name, "success")) |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
337 | jabber_auth_handle_success(js, *packet); |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
338 | else if (g_str_equal(name, "failure")) |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
339 | jabber_auth_handle_failure(js, *packet); |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
340 | } |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
341 | } else if (purple_strequal(xmlns, NS_XMPP_TLS)) { |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
342 | if (js->state != JABBER_STREAM_INITIALIZING_ENCRYPTION || js->gsc) |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
343 | purple_debug_warning("jabber", "Ignoring spurious %s\n", name); |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
344 | else { |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
345 | if (g_str_equal(name, "proceed")) |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
346 | tls_init(js); |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
347 | /* TODO: Handle <failure/>, I guess? */ |
|
76caf53857f5
jabber: The parser is namespace-aware, so don't match on "stream:features".
Paul Aurich <darkrain42@pidgin.im>
parents:
29853
diff
changeset
|
348 | } |
| 7014 | 349 | } else { |
|
28828
7c1855f037e7
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents:
28827
diff
changeset
|
350 | purple_debug_warning("jabber", "Unknown packet: %s\n", (*packet)->name); |
| 2086 | 351 | } |
| 352 | } | |
| 353 | ||
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
354 | 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
|
355 | { |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
356 | int ret; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
357 | |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
358 | if (js->gsc) |
| 15884 | 359 | ret = purple_ssl_write(js->gsc, data, len); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
360 | else |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
361 | ret = write(js->fd, data, len); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
362 | |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
363 | return ret; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
364 | } |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
365 | |
| 15884 | 366 | 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
|
367 | { |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
368 | JabberStream *js = data; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
369 | int ret, writelen; |
| 15884 | 370 | writelen = purple_circ_buffer_get_max_read(js->write_buffer); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
371 | |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
372 | if (writelen == 0) { |
| 15884 | 373 | purple_input_remove(js->writeh); |
|
13746
790924f38349
[gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents:
13546
diff
changeset
|
374 | js->writeh = 0; |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
375 | return; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
376 | } |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
377 | |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
378 | ret = jabber_do_send(js, js->write_buffer->outptr, writelen); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
379 | |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
380 | if (ret < 0 && errno == EAGAIN) |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
381 | return; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
382 | else if (ret <= 0) { |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
383 | gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"), |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
384 | g_strerror(errno)); |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
385 | purple_connection_error_reason(js->gc, |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
386 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
387 | g_free(tmp); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
388 | return; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
389 | } |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
390 | |
| 15884 | 391 | purple_circ_buffer_mark_read(js->write_buffer, ret); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
392 | } |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
393 | |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
394 | static gboolean do_jabber_send_raw(JabberStream *js, const char *data, int len) |
| 2086 | 395 | { |
| 7014 | 396 | int ret; |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
397 | gboolean success = TRUE; |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
398 | |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
399 | g_return_val_if_fail(len > 0, FALSE); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
400 | |
|
30056
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
401 | if (js->state == JABBER_STREAM_CONNECTED) |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
402 | jabber_stream_restart_inactivity_timer(js); |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
403 | |
|
13746
790924f38349
[gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents:
13546
diff
changeset
|
404 | if (js->writeh == 0) |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
405 | ret = jabber_do_send(js, data, len); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
406 | else { |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
407 | ret = -1; |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
408 | errno = EAGAIN; |
|
2814
91cc1a0cdee0
[gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2800
diff
changeset
|
409 | } |
|
91cc1a0cdee0
[gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2800
diff
changeset
|
410 | |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
411 | if (ret < 0 && errno != EAGAIN) { |
|
29262
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
412 | PurpleAccount *account = purple_connection_get_account(js->gc); |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
413 | /* |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
414 | * The server may have closed the socket (on a stream error), so if |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
415 | * we're disconnecting, don't generate (possibly another) error that |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
416 | * (for some UIs) would mask the first. |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
417 | */ |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
418 | if (!account->disconnecting) { |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
419 | gchar *tmp = g_strdup_printf(_("Lost connection with server: %s"), |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
420 | g_strerror(errno)); |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
421 | purple_connection_error_reason(js->gc, |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
422 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
423 | g_free(tmp); |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
424 | } |
|
6ec383410c8e
jabber: When doing writes while disconnecting, 'ignore' errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
29222
diff
changeset
|
425 | |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
426 | success = FALSE; |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
427 | } else if (ret < len) { |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
428 | if (ret < 0) |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
429 | ret = 0; |
|
13746
790924f38349
[gaim-migrate @ 16155]
Mark Doliner <markdoliner@pidgin.im>
parents:
13546
diff
changeset
|
430 | if (js->writeh == 0) |
| 15884 | 431 | js->writeh = purple_input_add( |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
432 | js->gsc ? js->gsc->fd : js->fd, |
| 15884 | 433 | PURPLE_INPUT_WRITE, jabber_send_cb, js); |
| 434 | purple_circ_buffer_append(js->write_buffer, | |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
435 | data + ret, len - ret); |
|
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
436 | } |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
437 | |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
438 | return success; |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
439 | } |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
440 | |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
441 | 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
|
442 | { |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
443 | PurpleConnection *gc; |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
444 | PurpleAccount *account; |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
445 | |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
446 | gc = js->gc; |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
447 | account = purple_connection_get_account(gc); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
448 | |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
449 | /* because printing a tab to debug every minute gets old */ |
|
25328
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
450 | if(strcmp(data, "\t")) { |
|
28827
76ec9a15f1a8
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents:
28760
diff
changeset
|
451 | const char *username; |
|
25328
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
452 | char *text = NULL, *last_part = NULL, *tag_start = NULL; |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
453 | |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
454 | /* Because debug logs with plaintext passwords make me sad */ |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
455 | if(js->state != JABBER_STREAM_CONNECTED && |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
456 | /* Either <auth> or <query><password>... */ |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
457 | (((tag_start = strstr(data, "<auth ")) && |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
458 | strstr(data, "xmlns='" NS_XMPP_SASL "'")) || |
|
25328
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
459 | ((tag_start = strstr(data, "<query ")) && |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
460 | strstr(data, "xmlns='jabber:iq:auth'>") && |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
461 | (tag_start = strstr(tag_start, "<password>"))))) { |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
462 | char *data_start, *tag_end = strchr(tag_start, '>'); |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
463 | text = g_strdup(data); |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
464 | |
|
25739
a10f2ed69334
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25727
diff
changeset
|
465 | /* Better to print out some wacky debugging than crash |
|
a10f2ed69334
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25727
diff
changeset
|
466 | * due to a plugin sending bad xml */ |
|
a10f2ed69334
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25727
diff
changeset
|
467 | if (tag_end == NULL) |
|
a10f2ed69334
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25727
diff
changeset
|
468 | tag_end = tag_start; |
|
a10f2ed69334
*** Plucked rev b786784e (datallah@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25727
diff
changeset
|
469 | |
|
25328
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
470 | data_start = text + (tag_end - data) + 1; |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
471 | |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
472 | last_part = strchr(data_start, '<'); |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
473 | *data_start = '\0'; |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
474 | } |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
475 | |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
476 | username = purple_connection_get_display_name(gc); |
|
28827
76ec9a15f1a8
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents:
28760
diff
changeset
|
477 | if (!username) |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
478 | username = purple_account_get_username(account); |
|
28827
76ec9a15f1a8
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents:
28760
diff
changeset
|
479 | |
|
76ec9a15f1a8
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents:
28760
diff
changeset
|
480 | purple_debug_misc("jabber", "Sending%s (%s): %s%s%s\n", |
|
76ec9a15f1a8
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents:
28760
diff
changeset
|
481 | jabber_stream_is_ssl(js) ? " (ssl)" : "", username, |
|
76ec9a15f1a8
jabber: Print account name on sent stanzas in the debug log.
Paul Aurich <darkrain42@pidgin.im>
parents:
28760
diff
changeset
|
482 | text ? text : data, |
|
25328
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
483 | last_part ? "password removed" : "", |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
484 | last_part ? last_part : ""); |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
485 | |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
486 | g_free(text); |
|
95d3adda6822
Don't log passwords for XMPP when using SASL PLAIN or old-style IQ Auth so
Paul Aurich <darkrain42@pidgin.im>
parents:
25304
diff
changeset
|
487 | } |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
488 | |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
489 | purple_signal_emit(purple_connection_get_prpl(gc), "jabber-sending-text", gc, &data); |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
490 | if (data == NULL) |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
491 | return; |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
492 | |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
493 | if (len == -1) |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
494 | len = strlen(data); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
495 | |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
496 | /* 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
|
497 | * splitting it on the maximum buffer length negotiated */ |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
498 | #ifdef HAVE_CYRUS_SASL |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
499 | if (js->sasl_maxbuf>0) { |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
500 | int pos = 0; |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
501 | |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
502 | if (!js->gsc && js->fd<0) |
|
30153
3cee3e2efd03
jabber: I don't see how this is possible, and it looks like an error to me.
Paul Aurich <darkrain42@pidgin.im>
parents:
30150
diff
changeset
|
503 | g_return_if_reached(); |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
504 | |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
505 | while (pos < len) { |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
506 | int towrite; |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
507 | const char *out; |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
508 | unsigned olen; |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
509 | int rc; |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
510 | |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
511 | towrite = MIN((len - pos), js->sasl_maxbuf); |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
512 | |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
513 | rc = sasl_encode(js->sasl, &data[pos], towrite, |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
514 | &out, &olen); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
515 | if (rc != SASL_OK) { |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
516 | gchar *error = |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
517 | g_strdup_printf(_("SASL error: %s"), |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
518 | sasl_errdetail(js->sasl)); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
519 | purple_debug_error("jabber", |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
520 | "sasl_encode error %d: %s\n", rc, |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
521 | sasl_errdetail(js->sasl)); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
522 | purple_connection_error_reason(gc, |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
523 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
524 | error); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
525 | g_free(error); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
526 | return; |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
527 | } |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
528 | pos += towrite; |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
529 | |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
530 | /* do_jabber_send_raw returns FALSE when it throws a |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
531 | * connection error. |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
532 | */ |
|
23519
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
533 | if (!do_jabber_send_raw(js, out, olen)) |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
534 | break; |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
535 | } |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
536 | return; |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
537 | } |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
538 | #endif |
|
7cbd7ed333d3
Cleanup some duplication and simplify this.
Daniel Atallah <datallah@pidgin.im>
parents:
23428
diff
changeset
|
539 | |
|
28064
6b6e3949132f
jabber: Remove js->use_bosh
Paul Aurich <darkrain42@pidgin.im>
parents:
28049
diff
changeset
|
540 | if (js->bosh) |
|
26660
be0a41af4dde
Pass all messages to BOSH as text, so they pass through the sending-text
Paul Aurich <darkrain42@pidgin.im>
parents:
26659
diff
changeset
|
541 | jabber_bosh_connection_send_raw(js->bosh, data); |
|
24873
7d1e91d5ec46
Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents:
24872
diff
changeset
|
542 | else |
|
23955
18bd5d80fb7b
explicit merge of '8d5884281cfb1c7a26fe80c919e38fa13f7a0c4b'
Paul Aurich <darkrain42@pidgin.im>
diff
changeset
|
543 | do_jabber_send_raw(js, data, len); |
| 14604 | 544 | } |
| 7014 | 545 | |
|
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
|
546 | int jabber_prpl_send_raw(PurpleConnection *gc, const char *buf, int len) |
| 14604 | 547 | { |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
548 | JabberStream *js = purple_connection_get_protocol_data(gc); |
|
30448
736dde71e3ec
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents:
30156
diff
changeset
|
549 | |
|
736dde71e3ec
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents:
30156
diff
changeset
|
550 | g_return_val_if_fail(js != NULL, -1); |
|
736dde71e3ec
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents:
30156
diff
changeset
|
551 | /* TODO: It's probably worthwhile to restrict this to when the account |
|
736dde71e3ec
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents:
30156
diff
changeset
|
552 | * state is CONNECTED, but I can /almost/ envision reasons for wanting |
|
736dde71e3ec
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents:
30156
diff
changeset
|
553 | * to do things during the connection process. |
|
736dde71e3ec
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents:
30156
diff
changeset
|
554 | */ |
|
736dde71e3ec
jabber: Stricter checks on the send_raw prpl function.
Paul Aurich <darkrain42@pidgin.im>
parents:
30156
diff
changeset
|
555 | |
| 14604 | 556 | jabber_send_raw(js, buf, len); |
| 557 | return len; | |
|
2814
91cc1a0cdee0
[gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2800
diff
changeset
|
558 | } |
|
91cc1a0cdee0
[gaim-migrate @ 2827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2800
diff
changeset
|
559 | |
|
27225
48c94daedc1c
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents:
27223
diff
changeset
|
560 | void jabber_send_signal_cb(PurpleConnection *pc, xmlnode **packet, |
|
48c94daedc1c
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents:
27223
diff
changeset
|
561 | gpointer unused) |
| 2086 | 562 | { |
|
27924
ef40c7484edc
Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents:
27918
diff
changeset
|
563 | JabberStream *js; |
| 7014 | 564 | char *txt; |
| 7642 | 565 | int len; |
| 2086 | 566 | |
|
27225
48c94daedc1c
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents:
27223
diff
changeset
|
567 | if (NULL == packet) |
| 14358 | 568 | return; |
| 569 | ||
|
30587
dacecb57b543
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents:
30512
diff
changeset
|
570 | g_return_if_fail(PURPLE_CONNECTION_IS_VALID(pc)); |
| 14358 | 571 | |
|
27924
ef40c7484edc
Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents:
27918
diff
changeset
|
572 | js = purple_connection_get_protocol_data(pc); |
|
28974
c781d3082146
Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
28928
diff
changeset
|
573 | |
|
c781d3082146
Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
28928
diff
changeset
|
574 | if (NULL == js) |
|
c781d3082146
Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
28928
diff
changeset
|
575 | return; |
|
c781d3082146
Add some safety to jabber_send_signal_cb in case someone else was listening
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
28928
diff
changeset
|
576 | |
|
28064
6b6e3949132f
jabber: Remove js->use_bosh
Paul Aurich <darkrain42@pidgin.im>
parents:
28049
diff
changeset
|
577 | if (js->bosh) |
|
27924
ef40c7484edc
Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents:
27918
diff
changeset
|
578 | if (g_str_equal((*packet)->name, "message") || |
|
ef40c7484edc
Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents:
27918
diff
changeset
|
579 | g_str_equal((*packet)->name, "iq") || |
|
ef40c7484edc
Set the namespace properly on stanzas for BOSH.
Paul Aurich <darkrain42@pidgin.im>
parents:
27918
diff
changeset
|
580 | g_str_equal((*packet)->name, "presence")) |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
581 | xmlnode_set_namespace(*packet, NS_XMPP_CLIENT); |
|
27225
48c94daedc1c
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents:
27223
diff
changeset
|
582 | txt = xmlnode_to_str(*packet, &len); |
| 7642 | 583 | jabber_send_raw(js, txt, len); |
| 7014 | 584 | g_free(txt); |
| 2086 | 585 | } |
| 586 | ||
|
27225
48c94daedc1c
Use the jabber-sending-xmlnode signal to send all XMPP stanzas.
Paul Aurich <darkrain42@pidgin.im>
parents:
27223
diff
changeset
|
587 | void jabber_send(JabberStream *js, xmlnode *packet) |
|
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
|
588 | { |
|
28832
4e4b609b85e4
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <darkrain42@pidgin.im>
parents:
28830
diff
changeset
|
589 | purple_signal_emit(purple_connection_get_prpl(js->gc), "jabber-sending-xmlnode", js->gc, &packet); |
|
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
|
590 | } |
|
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
|
591 | |
|
25555
dd0cb987435f
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <darkrain42@pidgin.im>
parents:
25552
diff
changeset
|
592 | static gboolean jabber_keepalive_timeout(PurpleConnection *gc) |
|
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
|
593 | { |
|
22101
747c8ade85aa
Masca noticed that 0d28b254d322fb0006034065870603672e5666d2 made jabber.c not
Will Thompson <resiak@pidgin.im>
parents:
22096
diff
changeset
|
594 | 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
|
595 | purple_connection_error_reason(gc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
596 | _("Ping timed out")); |
|
27304
b2dc447b8c0b
The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents:
27293
diff
changeset
|
597 | js->keepalive_timeout = 0; |
|
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
|
598 | 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
|
599 | } |
|
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
|
600 | |
|
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
|
601 | void jabber_keepalive(PurpleConnection *gc) |
| 2086 | 602 | { |
|
29771
b276f3e127af
jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents:
29749
diff
changeset
|
603 | JabberStream *js = purple_connection_get_protocol_data(gc); |
|
b276f3e127af
jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents:
29749
diff
changeset
|
604 | time_t now = time(NULL); |
|
b276f3e127af
jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents:
29749
diff
changeset
|
605 | |
|
b276f3e127af
jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents:
29749
diff
changeset
|
606 | if (js->keepalive_timeout == 0 && (now - js->last_ping) >= PING_TIMEOUT) { |
|
b276f3e127af
jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents:
29749
diff
changeset
|
607 | js->last_ping = now; |
|
b276f3e127af
jabber: Don't ping more often than once a minute.
Paul Aurich <darkrain42@pidgin.im>
parents:
29749
diff
changeset
|
608 | |
|
27143
977add4a215e
Stop trying to be clever with XMPP keepalive pings.
Paul Aurich <darkrain42@pidgin.im>
parents:
27110
diff
changeset
|
609 | jabber_keepalive_ping(js); |
|
25555
dd0cb987435f
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <darkrain42@pidgin.im>
parents:
25552
diff
changeset
|
610 | js->keepalive_timeout = purple_timeout_add_seconds(120, |
|
dd0cb987435f
Make the XMPP keepalive use jabber_ping_jid instead of building it itself.
Paul Aurich <darkrain42@pidgin.im>
parents:
25552
diff
changeset
|
611 | (GSourceFunc)(jabber_keepalive_timeout), gc); |
|
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
|
612 | } |
| 2086 | 613 | } |
| 614 | ||
| 7014 | 615 | static void |
| 15884 | 616 | jabber_recv_cb_ssl(gpointer data, PurpleSslConnection *gsc, |
| 617 | PurpleInputCondition cond) | |
| 6764 | 618 | { |
| 15884 | 619 | PurpleConnection *gc = data; |
| 7014 | 620 | JabberStream *js = gc->proto_data; |
| 6764 | 621 | int len; |
| 7014 | 622 | static char buf[4096]; |
| 6768 | 623 | |
|
14030
23144f1dc950
[gaim-migrate @ 16525]
Mark Doliner <markdoliner@pidgin.im>
parents:
14004
diff
changeset
|
624 | /* TODO: It should be possible to make this check unnecessary */ |
| 15884 | 625 | if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
| 626 | purple_ssl_close(gsc); | |
|
30587
dacecb57b543
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents:
30512
diff
changeset
|
627 | g_return_if_reached(); |
| 6768 | 628 | } |
| 629 | ||
| 15884 | 630 | 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
|
631 | gc->last_received = time(NULL); |
| 6764 | 632 | buf[len] = '\0'; |
|
28828
7c1855f037e7
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents:
28827
diff
changeset
|
633 | purple_debug_info("jabber", "Recv (ssl)(%d): %s\n", len, buf); |
| 7014 | 634 | jabber_parser_process(js, buf, len); |
| 14062 | 635 | if(js->reinit) |
| 636 | jabber_stream_init(js); | |
| 13280 | 637 | } |
| 638 | ||
|
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
|
639 | if(len < 0 && errno == EAGAIN) |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
640 | 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
|
641 | else { |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
642 | gchar *tmp; |
|
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
|
643 | if (len == 0) |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
644 | tmp = g_strdup_printf(_("Server closed the connection")); |
|
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
|
645 | else |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
646 | tmp = g_strdup_printf(_("Lost connection with server: %s"), |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
647 | g_strerror(errno)); |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
648 | purple_connection_error_reason(js->gc, |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
649 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
650 | g_free(tmp); |
|
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
|
651 | } |
| 2086 | 652 | } |
| 653 | ||
| 7014 | 654 | static void |
| 15884 | 655 | jabber_recv_cb(gpointer data, gint source, PurpleInputCondition condition) |
| 2086 | 656 | { |
| 15884 | 657 | PurpleConnection *gc = data; |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
658 | JabberStream *js = purple_connection_get_protocol_data(gc); |
| 7014 | 659 | int len; |
| 660 | static char buf[4096]; | |
| 2086 | 661 | |
|
30587
dacecb57b543
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents:
30512
diff
changeset
|
662 | g_return_if_fail(PURPLE_CONNECTION_IS_VALID(gc)); |
| 2956 | 663 | |
| 7014 | 664 | 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
|
665 | gc->last_received = time(NULL); |
| 12508 | 666 | #ifdef HAVE_CYRUS_SASL |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
667 | if (js->sasl_maxbuf > 0) { |
| 12508 | 668 | const char *out; |
|
14697
518c0fae208e
[gaim-migrate @ 17381]
Daniel Atallah <datallah@pidgin.im>
parents:
14668
diff
changeset
|
669 | unsigned int olen; |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
670 | int rc; |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
671 | |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
672 | rc = sasl_decode(js->sasl, buf, len, &out, &olen); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
673 | if (rc != SASL_OK) { |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
674 | gchar *error = |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
675 | g_strdup_printf(_("SASL error: %s"), |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
676 | sasl_errdetail(js->sasl)); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
677 | purple_debug_error("jabber", |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
678 | "sasl_decode_error %d: %s\n", rc, |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
679 | sasl_errdetail(js->sasl)); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
680 | purple_connection_error_reason(gc, |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
681 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
682 | error); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
683 | } else if (olen > 0) { |
|
28828
7c1855f037e7
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents:
28827
diff
changeset
|
684 | purple_debug_info("jabber", "RecvSASL (%u): %s\n", olen, out); |
|
30155
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
685 | jabber_parser_process(js, out, olen); |
|
8e22b8cc78ee
jabber: A bunch of paranoia-induced Cyrus SASL changes.
Paul Aurich <darkrain42@pidgin.im>
parents:
30153
diff
changeset
|
686 | if (js->reinit) |
| 14700 | 687 | jabber_stream_init(js); |
| 12508 | 688 | } |
| 689 | return; | |
| 690 | } | |
| 691 | #endif | |
| 7014 | 692 | buf[len] = '\0'; |
|
28828
7c1855f037e7
jabber: Convert to purple_debug_* convenience functions.
Paul Aurich <darkrain42@pidgin.im>
parents:
28827
diff
changeset
|
693 | purple_debug_info("jabber", "Recv (%d): %s\n", len, buf); |
| 7014 | 694 | jabber_parser_process(js, buf, len); |
| 14700 | 695 | if(js->reinit) |
| 696 | 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
|
697 | } else if(len < 0 && errno == EAGAIN) { |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
698 | return; |
| 7177 | 699 | } else { |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
700 | gchar *tmp; |
|
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
|
701 | if (len == 0) |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
702 | tmp = g_strdup_printf(_("Server closed the connection")); |
|
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
|
703 | else |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
704 | tmp = g_strdup_printf(_("Lost connection with server: %s"), |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
705 | g_strerror(errno)); |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
706 | purple_connection_error_reason(js->gc, |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
707 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, tmp); |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
708 | g_free(tmp); |
| 7014 | 709 | } |
| 2086 | 710 | } |
| 711 | ||
| 7014 | 712 | static void |
| 15884 | 713 | jabber_login_callback_ssl(gpointer data, PurpleSslConnection *gsc, |
| 714 | PurpleInputCondition cond) | |
| 6764 | 715 | { |
| 15884 | 716 | PurpleConnection *gc = data; |
|
15023
c38f385a128a
[gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents:
14899
diff
changeset
|
717 | JabberStream *js; |
|
c38f385a128a
[gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents:
14899
diff
changeset
|
718 | |
|
c38f385a128a
[gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents:
14899
diff
changeset
|
719 | /* TODO: It should be possible to make this check unnecessary */ |
| 15884 | 720 | if(!PURPLE_CONNECTION_IS_VALID(gc)) { |
| 721 | purple_ssl_close(gsc); | |
|
30587
dacecb57b543
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents:
30512
diff
changeset
|
722 | g_return_if_reached(); |
|
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
|
723 | } |
|
15023
c38f385a128a
[gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents:
14899
diff
changeset
|
724 | |
|
c38f385a128a
[gaim-migrate @ 17740]
Evan Schoenberg <evands@pidgin.im>
parents:
14899
diff
changeset
|
725 | js = gc->proto_data; |
| 6764 | 726 | |
| 7014 | 727 | if(js->state == JABBER_STREAM_CONNECTING) |
| 7642 | 728 | jabber_send_raw(js, "<?xml version='1.0' ?>", -1); |
| 7014 | 729 | jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
| 15884 | 730 | purple_ssl_input_add(gsc, jabber_recv_cb_ssl, gc); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
731 | |
|
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
|
732 | /* 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
|
733 | jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING_ENCRYPTION); |
| 6764 | 734 | } |
| 735 | ||
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
736 | static void |
|
27605
b03b418413b0
A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <deryni@pidgin.im>
parents:
27603
diff
changeset
|
737 | txt_resolved_cb(GList *responses, gpointer data) |
|
23607
bc82598d3798
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23604
diff
changeset
|
738 | { |
|
24872
68de61b562f6
Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents:
24871
diff
changeset
|
739 | JabberStream *js = data; |
|
26766
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
740 | |
|
24871
60f1695a34e8
Track the TXT query in the js object so it will be cancelleable
Paul Aurich <darkrain42@pidgin.im>
parents:
24870
diff
changeset
|
741 | js->srv_query_data = NULL; |
|
60f1695a34e8
Track the TXT query in the js object so it will be cancelleable
Paul Aurich <darkrain42@pidgin.im>
parents:
24870
diff
changeset
|
742 | |
|
26766
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
743 | if (responses == NULL) { |
|
29137
53b3ca48818e
jabber: Print a better error message when all connection methods fail.
Paul Aurich <darkrain42@pidgin.im>
parents:
29096
diff
changeset
|
744 | purple_debug_warning("jabber", "Unable to find alternative XMPP connection " |
|
29221
7f2b72fc521a
jabber: Newline at the end of this message.
Paul Aurich <darkrain42@pidgin.im>
parents:
29137
diff
changeset
|
745 | "methods after failing to connect directly.\n"); |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
746 | purple_connection_error_reason(js->gc, |
|
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
747 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
29137
53b3ca48818e
jabber: Print a better error message when all connection methods fail.
Paul Aurich <darkrain42@pidgin.im>
parents:
29096
diff
changeset
|
748 | _("Unable to connect")); |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
749 | return; |
|
23607
bc82598d3798
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23604
diff
changeset
|
750 | } |
|
26766
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
751 | |
|
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
752 | while (responses) { |
|
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
753 | PurpleTxtResponse *resp = responses->data; |
|
23608
42569940482d
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23607
diff
changeset
|
754 | gchar **token; |
|
26766
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
755 | token = g_strsplit(purple_txt_response_get_content(resp), "=", 2); |
|
23608
42569940482d
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23607
diff
changeset
|
756 | if (!strcmp(token[0], "_xmpp-client-xbosh")) { |
|
42569940482d
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23607
diff
changeset
|
757 | purple_debug_info("jabber","Found alternative connection method using %s at %s.\n", token[0], token[1]); |
|
24872
68de61b562f6
Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents:
24871
diff
changeset
|
758 | js->bosh = jabber_bosh_connection_init(js, token[1]); |
|
23608
42569940482d
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23607
diff
changeset
|
759 | g_strfreev(token); |
|
42569940482d
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23607
diff
changeset
|
760 | break; |
|
42569940482d
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23607
diff
changeset
|
761 | } |
|
42569940482d
* small bugfix in jabber_ipc_add_feature()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23607
diff
changeset
|
762 | g_strfreev(token); |
|
26766
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
763 | purple_txt_response_destroy(resp); |
|
27605
b03b418413b0
A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <deryni@pidgin.im>
parents:
27603
diff
changeset
|
764 | responses = g_list_delete_link(responses, responses); |
|
23607
bc82598d3798
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23604
diff
changeset
|
765 | } |
|
26766
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
766 | |
|
24872
68de61b562f6
Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents:
24871
diff
changeset
|
767 | if (js->bosh) { |
|
68de61b562f6
Jabber BOSH: Many fixes
Paul Aurich <darkrain42@pidgin.im>
parents:
24871
diff
changeset
|
768 | jabber_bosh_connection_connect(js->bosh); |
|
23611
d811757e19b5
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23608
diff
changeset
|
769 | } else { |
|
d811757e19b5
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23608
diff
changeset
|
770 | purple_debug_info("jabber","Didn't find an alternative connection method.\n"); |
|
d811757e19b5
* adding bosh files to Makefile.am & .mingw
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23608
diff
changeset
|
771 | } |
|
26765
fc156c427d59
First crack at Win32 TXT DNS query code and don't leak the PurpleTxtResponses
Paul Aurich <darkrain42@pidgin.im>
parents:
26764
diff
changeset
|
772 | |
|
26766
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
773 | if (responses) { |
|
27605
b03b418413b0
A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <deryni@pidgin.im>
parents:
27603
diff
changeset
|
774 | g_list_foreach(responses, (GFunc)purple_txt_response_destroy, NULL); |
|
b03b418413b0
A couple more s/GSList/GList/ changes as fallout from the last change.
Etan Reisner <deryni@pidgin.im>
parents:
27603
diff
changeset
|
775 | g_list_free(responses); |
|
26766
854a2eaa3862
Hide PurpleTxtResponse and use a more purple API
Paul Aurich <darkrain42@pidgin.im>
parents:
26765
diff
changeset
|
776 | } |
|
23607
bc82598d3798
* looking for alternative connection methods if direct connection fails
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23604
diff
changeset
|
777 | } |
| 7014 | 778 | |
| 779 | static void | |
|
14175
2bc5a80c5071
[gaim-migrate @ 16747]
Mark Doliner <markdoliner@pidgin.im>
parents:
14170
diff
changeset
|
780 | jabber_login_callback(gpointer data, gint source, const gchar *error) |
| 6764 | 781 | { |
| 15884 | 782 | PurpleConnection *gc = data; |
|
29222
022a4164460c
jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <darkrain42@pidgin.im>
parents:
29221
diff
changeset
|
783 | JabberStream *js = purple_connection_get_protocol_data(gc); |
| 2086 | 784 | |
|
8783
7be6da5bc279
[gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents:
8778
diff
changeset
|
785 | 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
|
786 | if (js->srv_rec != NULL) { |
|
29222
022a4164460c
jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <darkrain42@pidgin.im>
parents:
29221
diff
changeset
|
787 | purple_debug_error("jabber", "Unable to connect to server: %s. Trying next SRV record or connecting directly.\n", error); |
|
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
|
788 | 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
|
789 | } else { |
|
29222
022a4164460c
jabber: Pedantically this bothered me, but changing the message to
Paul Aurich <darkrain42@pidgin.im>
parents:
29221
diff
changeset
|
790 | purple_debug_info("jabber","Couldn't connect directly to %s. Trying to find alternative connection methods, like BOSH.\n", js->user->domain); |
|
27863
b51630f09c6b
ASCII-ize the TXT query, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
27860
diff
changeset
|
791 | js->srv_query_data = purple_txt_resolve("_xmppconnect", |
|
27898
4a6450d92e11
Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents:
27872
diff
changeset
|
792 | js->user->domain, txt_resolved_cb, 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
|
793 | } |
|
8783
7be6da5bc279
[gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents:
8778
diff
changeset
|
794 | return; |
|
7be6da5bc279
[gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents:
8778
diff
changeset
|
795 | } |
|
7be6da5bc279
[gaim-migrate @ 9545]
Mark Doliner <markdoliner@pidgin.im>
parents:
8778
diff
changeset
|
796 | |
|
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
|
797 | 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
|
798 | 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
|
799 | |
| 7014 | 800 | js->fd = source; |
| 2956 | 801 | |
| 7014 | 802 | if(js->state == JABBER_STREAM_CONNECTING) |
| 7642 | 803 | jabber_send_raw(js, "<?xml version='1.0' ?>", -1); |
|
2300
06a3c10f4918
[gaim-migrate @ 2310]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2289
diff
changeset
|
804 | |
| 7014 | 805 | jabber_stream_set_state(js, JABBER_STREAM_INITIALIZING); |
| 15884 | 806 | gc->inpa = purple_input_add(js->fd, PURPLE_INPUT_READ, jabber_recv_cb, gc); |
| 7014 | 807 | } |
| 2086 | 808 | |
| 7014 | 809 | static void |
| 15884 | 810 | jabber_ssl_connect_failure(PurpleSslConnection *gsc, PurpleSslErrorType error, |
| 7426 | 811 | gpointer data) |
| 812 | { | |
| 15884 | 813 | 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
|
814 | JabberStream *js; |
| 7426 | 815 | |
|
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
|
816 | /* If the connection is already disconnected, we don't need to do anything else */ |
|
30587
dacecb57b543
jabber: g_return-ify some PURPLE_CONNECTION_IS_VALID checks
Paul Aurich <darkrain42@pidgin.im>
parents:
30512
diff
changeset
|
817 | g_return_if_fail(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
|
818 | |
|
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
|
819 | js = gc->proto_data; |
|
14312
6ce4512aa9a8
[gaim-migrate @ 16932]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
820 | js->gsc = NULL; |
|
6ce4512aa9a8
[gaim-migrate @ 16932]
Mark Doliner <markdoliner@pidgin.im>
parents:
14254
diff
changeset
|
821 | |
|
20445
c900767c024b
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents:
20332
diff
changeset
|
822 | purple_connection_ssl_error (gc, error); |
| 7426 | 823 | } |
| 824 | ||
| 7427 | 825 | static void tls_init(JabberStream *js) |
| 826 | { | |
| 15884 | 827 | purple_input_remove(js->gc->inpa); |
| 7427 | 828 | js->gc->inpa = 0; |
|
18449
2d2df64f4303
applied changes from f9186fabb483b56a9d7e8fb7241b2520e9930413
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18235
diff
changeset
|
829 | 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
|
830 | jabber_login_callback_ssl, jabber_ssl_connect_failure, js->certificate_CN, js->gc); |
|
27918
b32f476d9e35
Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <darkrain42@pidgin.im>
parents:
27898
diff
changeset
|
831 | /* The fd is no longer our concern */ |
|
b32f476d9e35
Clear out the fd when we pass it off to the SSL subsystem
Paul Aurich <darkrain42@pidgin.im>
parents:
27898
diff
changeset
|
832 | js->fd = -1; |
| 7427 | 833 | } |
| 834 | ||
|
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
|
835 | 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
|
836 | gboolean fatal_failure) |
| 11387 | 837 | { |
|
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
|
838 | /* 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
|
839 | * 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
|
840 | * 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
|
841 | * 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
|
842 | 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
|
843 | 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
|
844 | 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
|
845 | 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
|
846 | 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
|
847 | |
|
27872
80d354ef1295
To make grim happy (or more upset).
Paul Aurich <darkrain42@pidgin.im>
parents:
27863
diff
changeset
|
848 | if (purple_proxy_connect(js->gc, purple_connection_get_account(js->gc), |
|
80d354ef1295
To make grim happy (or more upset).
Paul Aurich <darkrain42@pidgin.im>
parents:
27863
diff
changeset
|
849 | host, port, jabber_login_callback, js->gc) == NULL) { |
|
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
|
850 | if (fatal_failure) { |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
851 | purple_connection_error_reason(js->gc, |
|
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
|
852 | PURPLE_CONNECTION_ERROR_NETWORK_ERROR, |
|
27635
0cd19038c417
More uniformity among disconnect error messages
Mark Doliner <markdoliner@pidgin.im>
parents:
27605
diff
changeset
|
853 | _("Unable to connect")); |
|
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
|
854 | } |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
855 | |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
856 | 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
|
857 | } |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
858 | |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
859 | 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
|
860 | } |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
861 | |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
862 | 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
|
863 | { |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
864 | 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
|
865 | 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
|
866 | 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
|
867 | 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
|
868 | } |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
869 | |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
870 | 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
|
871 | 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
|
872 | |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
873 | /* 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
|
874 | jabber_login_connect(js, js->user->domain, js->user->domain, |
|
27872
80d354ef1295
To make grim happy (or more upset).
Paul Aurich <darkrain42@pidgin.im>
parents:
27863
diff
changeset
|
875 | purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222), |
|
27898
4a6450d92e11
Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents:
27872
diff
changeset
|
876 | TRUE); |
| 11387 | 877 | } |
| 878 | ||
| 15884 | 879 | static void srv_resolved_cb(PurpleSrvResponse *resp, int results, gpointer data) |
| 11387 | 880 | { |
|
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
|
881 | JabberStream *js = data; |
|
14370
12ef3d4096ee
[gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents:
14358
diff
changeset
|
882 | js->srv_query_data = NULL; |
| 11387 | 883 | |
| 884 | 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
|
885 | 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
|
886 | 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
|
887 | 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
|
888 | try_srv_connect(js); |
| 11387 | 889 | } else { |
| 17052 | 890 | jabber_login_connect(js, js->user->domain, js->user->domain, |
|
27872
80d354ef1295
To make grim happy (or more upset).
Paul Aurich <darkrain42@pidgin.im>
parents:
27863
diff
changeset
|
891 | purple_account_get_int(purple_connection_get_account(js->gc), "port", 5222), |
|
27898
4a6450d92e11
Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents:
27872
diff
changeset
|
892 | TRUE); |
| 11387 | 893 | } |
| 894 | } | |
| 895 | ||
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
896 | static JabberStream * |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
897 | jabber_stream_new(PurpleAccount *account) |
| 2086 | 898 | { |
| 15884 | 899 | PurpleConnection *gc = purple_account_get_connection(account); |
| 7014 | 900 | JabberStream *js; |
|
25532
10e7f850b235
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents:
25531
diff
changeset
|
901 | PurplePresence *presence; |
|
27860
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
902 | gchar *user; |
|
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
903 | gchar *slash; |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
904 | |
| 7014 | 905 | js = gc->proto_data = g_new0(JabberStream, 1); |
| 906 | js->gc = gc; | |
|
8013
03f5b77cdaf0
[gaim-migrate @ 8693]
Olivier Blin <blino@users.sourceforge.net>
parents:
8011
diff
changeset
|
907 | js->fd = -1; |
|
27860
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
908 | |
|
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
909 | user = g_strdup(purple_account_get_username(account)); |
|
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
910 | /* jabber_id_new doesn't accept "user@domain/" as valid */ |
|
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
911 | slash = strchr(user, '/'); |
|
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
912 | if (slash && *(slash + 1) == '\0') |
|
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
913 | *slash = '\0'; |
|
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
914 | js->user = jabber_id_new(user); |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
915 | |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
916 | if (!js->user) { |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
917 | purple_connection_error_reason(gc, |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
918 | PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
919 | _("Invalid XMPP ID")); |
| 30035 | 920 | g_free(user); |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
921 | /* Destroying the connection will free the JabberStream */ |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
922 | return NULL; |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
923 | } |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
924 | |
|
29979
f7f4478c8d19
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents:
29910
diff
changeset
|
925 | if (!js->user->node || *(js->user->node) == '\0') { |
|
f7f4478c8d19
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents:
29910
diff
changeset
|
926 | purple_connection_error_reason(gc, |
|
f7f4478c8d19
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents:
29910
diff
changeset
|
927 | PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
|
f7f4478c8d19
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents:
29910
diff
changeset
|
928 | _("Invalid XMPP ID. Username portion must be set.")); |
| 30035 | 929 | g_free(user); |
|
29979
f7f4478c8d19
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents:
29910
diff
changeset
|
930 | /* Destroying the connection will free the JabberStream */ |
|
f7f4478c8d19
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents:
29910
diff
changeset
|
931 | return NULL; |
|
f7f4478c8d19
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents:
29910
diff
changeset
|
932 | } |
|
f7f4478c8d19
jabber: Check at connection time that the user specified a JID with a node.
Paul Aurich <darkrain42@pidgin.im>
parents:
29910
diff
changeset
|
933 | |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
934 | if (!js->user->domain || *(js->user->domain) == '\0') { |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
935 | purple_connection_error_reason(gc, |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
936 | PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
937 | _("Invalid XMPP ID. Domain must be set.")); |
| 30035 | 938 | g_free(user); |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
939 | /* Destroying the connection will free the JabberStream */ |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
940 | return NULL; |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
941 | } |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
942 | |
| 7014 | 943 | js->buddies = g_hash_table_new_full(g_str_hash, g_str_equal, |
| 7116 | 944 | g_free, (GDestroyNotify)jabber_buddy_free); |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
945 | |
|
28071
a0706162fefd
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents:
28070
diff
changeset
|
946 | js->user_jb = jabber_buddy_find(js, user, TRUE); |
|
27860
2b75b87699c8
Support connecting to IDNA XMPP domains.
Paul Aurich <darkrain42@pidgin.im>
parents:
27850
diff
changeset
|
947 | g_free(user); |
|
28071
a0706162fefd
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents:
28070
diff
changeset
|
948 | if (!js->user_jb) { |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
949 | /* This basically *can't* fail, but for good measure... */ |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
950 | purple_connection_error_reason(gc, |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
951 | PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
952 | _("Invalid XMPP ID")); |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
953 | /* Destroying the connection will free the JabberStream */ |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
954 | g_return_val_if_reached(NULL); |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
955 | } |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
956 | |
|
28071
a0706162fefd
jabber: Store the "own JabberBuddy" in the JabberStream* struct.
Paul Aurich <darkrain42@pidgin.im>
parents:
28070
diff
changeset
|
957 | js->user_jb->subscription |= JABBER_SUB_BOTH; |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
958 | |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
959 | js->iq_callbacks = g_hash_table_new_full(g_str_hash, g_str_equal, |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
960 | g_free, g_free); |
| 7014 | 961 | js->chats = g_hash_table_new_full(g_str_hash, g_str_equal, |
| 8396 | 962 | g_free, (GDestroyNotify)jabber_chat_free); |
| 7322 | 963 | js->next_id = g_random_int(); |
| 15884 | 964 | 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
|
965 | js->old_length = 0; |
|
27304
b2dc447b8c0b
The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents:
27293
diff
changeset
|
966 | js->keepalive_timeout = 0; |
|
30056
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
967 | js->max_inactivity = DEFAULT_INACTIVITY_TIME; |
|
26080
bfe333bf2ae8
Jabber: Default protocol version to 1.0.
Paul Aurich <darkrain42@pidgin.im>
parents:
26074
diff
changeset
|
968 | /* Set the default protocol version to 1.0. Overridden in parser.c. */ |
|
29849
d7b910200dc5
jabber: Treat the version properly.
Paul Aurich <darkrain42@pidgin.im>
parents:
29848
diff
changeset
|
969 | js->protocol_version.major = 1; |
|
d7b910200dc5
jabber: Treat the version properly.
Paul Aurich <darkrain42@pidgin.im>
parents:
29848
diff
changeset
|
970 | js->protocol_version.minor = 0; |
|
23698
0815965bd80b
Moved jingle.c global variable "sessions" into JabberStream.
Michael Ruprecht <maiku@pidgin.im>
parents:
23697
diff
changeset
|
971 | js->sessions = NULL; |
|
26286
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
972 | js->stun_ip = NULL; |
|
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
973 | js->stun_port = 0; |
|
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
974 | js->stun_query = NULL; |
| 5613 | 975 | |
|
25531
b348ceba3289
Set idle time on JabberStream when logging in
Marcus Lundblad <malu@pidgin.im>
parents:
25497
diff
changeset
|
976 | /* if we are idle, set idle-ness on the stream (this could happen if we get |
|
b348ceba3289
Set idle time on JabberStream when logging in
Marcus Lundblad <malu@pidgin.im>
parents:
25497
diff
changeset
|
977 | disconnected and the reconnects while being idle. I don't think it makes |
|
b348ceba3289
Set idle time on JabberStream when logging in
Marcus Lundblad <malu@pidgin.im>
parents:
25497
diff
changeset
|
978 | sense to do this when registering a new account... */ |
|
25532
10e7f850b235
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents:
25531
diff
changeset
|
979 | presence = purple_account_get_presence(account); |
|
10e7f850b235
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents:
25531
diff
changeset
|
980 | if (purple_presence_is_idle(presence)) |
|
10e7f850b235
Patch from Paul Aurich to fix reporting idle when reconnecting only when we're
Marcus Lundblad <malu@pidgin.im>
parents:
25531
diff
changeset
|
981 | js->idle = purple_presence_get_idle_time(presence); |
| 5613 | 982 | |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
983 | return js; |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
984 | } |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
985 | |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
986 | static void |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
987 | jabber_stream_connect(JabberStream *js) |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
988 | { |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
989 | PurpleConnection *gc = js->gc; |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
990 | PurpleAccount *account = purple_connection_get_account(gc); |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
991 | const char *connect_server = purple_account_get_string(account, |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
992 | "connect_server", ""); |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
993 | const char *bosh_url = purple_account_get_string(account, |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
994 | "bosh_url", ""); |
| 10289 | 995 | |
| 7014 | 996 | jabber_stream_set_state(js, JABBER_STREAM_CONNECTING); |
| 2956 | 997 | |
|
27397
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
998 | /* If both BOSH and a Connect Server are specified, we prefer BOSH. I'm not |
|
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
999 | * attached to that choice, though. |
|
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1000 | */ |
|
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1001 | if (*bosh_url) { |
|
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1002 | js->bosh = jabber_bosh_connection_init(js, bosh_url); |
|
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1003 | if (js->bosh) |
|
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1004 | jabber_bosh_connection_connect(js->bosh); |
|
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1005 | else { |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1006 | purple_connection_error_reason(gc, |
|
25803
04c2dbd49ac2
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <darkrain42@pidgin.im>
parents:
25802
diff
changeset
|
1007 | PURPLE_CONNECTION_ERROR_INVALID_SETTINGS, |
|
27397
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1008 | _("Malformed BOSH URL")); |
|
25803
04c2dbd49ac2
Allow the user to specify their own BOSH url in the Connect Server option
Paul Aurich <darkrain42@pidgin.im>
parents:
25802
diff
changeset
|
1009 | } |
|
27397
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1010 | |
|
24870
98e6bafdf33f
Add option for forcing BOSH (useful for debugging)
Paul Aurich <darkrain42@pidgin.im>
parents:
24868
diff
changeset
|
1011 | return; |
|
98e6bafdf33f
Add option for forcing BOSH (useful for debugging)
Paul Aurich <darkrain42@pidgin.im>
parents:
24868
diff
changeset
|
1012 | } |
|
98e6bafdf33f
Add option for forcing BOSH (useful for debugging)
Paul Aurich <darkrain42@pidgin.im>
parents:
24868
diff
changeset
|
1013 | |
|
27397
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1014 | js->certificate_CN = g_strdup(connect_server[0] ? connect_server : js->user->domain); |
|
690965a5ff24
Make "BOSH URL" its own account option.
Paul Aurich <darkrain42@pidgin.im>
parents:
27361
diff
changeset
|
1015 | |
| 11387 | 1016 | /* if they've got old-ssl mode going, we probably want to ignore SRV lookups */ |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1017 | if(purple_account_get_bool(account, "old_ssl", FALSE)) { |
| 15884 | 1018 | if(purple_ssl_is_supported()) { |
|
27898
4a6450d92e11
Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents:
27872
diff
changeset
|
1019 | js->gsc = purple_ssl_connect(account, js->certificate_CN, |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1020 | purple_account_get_int(account, "port", 5223), |
|
27898
4a6450d92e11
Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents:
27872
diff
changeset
|
1021 | jabber_login_callback_ssl, jabber_ssl_connect_failure, gc); |
|
25804
f18ad58795a2
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents:
25803
diff
changeset
|
1022 | if (!js->gsc) { |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1023 | purple_connection_error_reason(gc, |
|
25804
f18ad58795a2
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents:
25803
diff
changeset
|
1024 | PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
|
f18ad58795a2
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents:
25803
diff
changeset
|
1025 | _("Unable to establish SSL connection")); |
|
f18ad58795a2
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents:
25803
diff
changeset
|
1026 | } |
| 7630 | 1027 | } else { |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1028 | purple_connection_error_reason(gc, |
| 21279 | 1029 | PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT, |
|
20445
c900767c024b
Use PurpleDisconnectReasons in prpl-jabber.
Will Thompson <resiak@pidgin.im>
parents:
20332
diff
changeset
|
1030 | _("SSL support unavailable")); |
| 7630 | 1031 | } |
|
25804
f18ad58795a2
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents:
25803
diff
changeset
|
1032 | |
|
f18ad58795a2
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents:
25803
diff
changeset
|
1033 | return; |
| 3311 | 1034 | } |
| 3770 | 1035 | |
| 11387 | 1036 | /* no old-ssl, so if they've specified a connect server, we'll use that, otherwise we'll |
| 1037 | * invoke the magic of SRV lookups, to figure out host and port */ | |
|
26072
e8fce2b2b9fe
propagate from branch 'im.pidgin.pidgin' (head b4bbfacd7f2050d87deeda12ea7bb3adc3608cb7)
Paul Aurich <darkrain42@pidgin.im>
diff
changeset
|
1038 | if(connect_server[0]) { |
|
27898
4a6450d92e11
Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents:
27872
diff
changeset
|
1039 | jabber_login_connect(js, js->user->domain, connect_server, |
|
4a6450d92e11
Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents:
27872
diff
changeset
|
1040 | purple_account_get_int(account, "port", 5222), TRUE); |
|
25804
f18ad58795a2
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents:
25803
diff
changeset
|
1041 | } else { |
|
f18ad58795a2
Don't fallback (under any conditions) from old-style SSL to other connections
Paul Aurich <darkrain42@pidgin.im>
parents:
25803
diff
changeset
|
1042 | js->srv_query_data = purple_srv_resolve("xmpp-client", |
|
27898
4a6450d92e11
Move the IDN support into the DNS routines.
Paul Aurich <darkrain42@pidgin.im>
parents:
27872
diff
changeset
|
1043 | "tcp", js->user->domain, srv_resolved_cb, js); |
| 11387 | 1044 | } |
| 1045 | } | |
| 1046 | ||
|
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
|
1047 | void |
| 15884 | 1048 | jabber_login(PurpleAccount *account) |
| 2086 | 1049 | { |
| 15884 | 1050 | PurpleConnection *gc = purple_account_get_connection(account); |
| 7014 | 1051 | JabberStream *js; |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1052 | PurpleStoredImage *image; |
| 2086 | 1053 | |
|
23626
e21afec2f485
Custom smileys for XMPP according to XEP 0231. Refs #5627.
Marcus Lundblad <malu@pidgin.im>
parents:
23325
diff
changeset
|
1054 | 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
|
1055 | PURPLE_CONNECTION_ALLOW_CUSTOM_SMILEY; |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1056 | js = jabber_stream_new(account); |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1057 | if (js == NULL) |
| 7310 | 1058 | return; |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1059 | |
|
29370
9ff8f3bdd0f5
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <darkrain42@pidgin.im>
parents:
29345
diff
changeset
|
1060 | /* TODO: Remove this at some point. Added 2010-02-14 (v2.6.6) */ |
|
9ff8f3bdd0f5
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <darkrain42@pidgin.im>
parents:
29345
diff
changeset
|
1061 | if (g_str_equal("proxy.jabber.org", purple_account_get_string(account, "ft_proxies", ""))) |
|
9ff8f3bdd0f5
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <darkrain42@pidgin.im>
parents:
29345
diff
changeset
|
1062 | purple_account_set_string(account, "ft_proxies", JABBER_DEFAULT_FT_PROXIES); |
|
9ff8f3bdd0f5
jabber: Update the default FT proxy (if it's still set as the previous, broken, default).
Paul Aurich <darkrain42@pidgin.im>
parents:
29345
diff
changeset
|
1063 | |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1064 | /* |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1065 | * Calculate the avatar hash for our current image so we know (when we |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1066 | * fetch our vCard and PEP avatar) if we should send our avatar to the |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1067 | * server. |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1068 | */ |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1069 | image = purple_buddy_icons_find_account_icon(account); |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1070 | if (image != NULL) { |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1071 | js->initial_avatar_hash = |
|
29910
f1c6e586e5c1
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <malu@pidgin.im>
parents:
29865
diff
changeset
|
1072 | jabber_calculate_data_hash(purple_imgstore_get_data(image), |
|
f1c6e586e5c1
jabber: Validate the hash on incoming BoB objects (in case the CID is on the
Marcus Lundblad <malu@pidgin.im>
parents:
29865
diff
changeset
|
1073 | purple_imgstore_get_size(image), "sha1"); |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1074 | purple_imgstore_unref(image); |
| 7310 | 1075 | } |
|
26286
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
1076 | |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1077 | jabber_stream_connect(js); |
| 2086 | 1078 | } |
| 1079 | ||
| 11387 | 1080 | |
| 7072 | 1081 | static gboolean |
| 1082 | conn_close_cb(gpointer data) | |
| 1083 | { | |
| 1084 | JabberStream *js = data; | |
| 15884 | 1085 | PurpleAccount *account = purple_connection_get_account(js->gc); |
|
10740
a1cb6b819a21
[gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents:
10504
diff
changeset
|
1086 | |
|
17810
c8d4297080cb
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents:
17806
diff
changeset
|
1087 | jabber_parser_free(js); |
|
10740
a1cb6b819a21
[gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents:
10504
diff
changeset
|
1088 | |
| 15884 | 1089 | purple_account_disconnect(account); |
|
10740
a1cb6b819a21
[gaim-migrate @ 12342]
Mark Doliner <markdoliner@pidgin.im>
parents:
10504
diff
changeset
|
1090 | |
| 7072 | 1091 | return FALSE; |
| 1092 | } | |
| 1093 | ||
| 1094 | static void | |
| 1095 | jabber_connection_schedule_close(JabberStream *js) | |
| 1096 | { | |
| 15884 | 1097 | purple_timeout_add(0, conn_close_cb, js); |
| 7072 | 1098 | } |
| 1099 | ||
| 1100 | static void | |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1101 | jabber_registration_result_cb(JabberStream *js, const char *from, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1102 | JabberIqType type, const char *id, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1103 | xmlnode *packet, gpointer data) |
| 7072 | 1104 | { |
|
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
|
1105 | PurpleAccount *account = purple_connection_get_account(js->gc); |
| 7072 | 1106 | 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
|
1107 | char *to = data; |
| 7072 | 1108 | |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1109 | if (type == JABBER_IQ_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
|
1110 | if(js->registration) { |
|
27525
579b9d64b364
A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27397
diff
changeset
|
1111 | buf = g_strdup_printf(_("Registration of %s@%s successful"), |
| 27587 | 1112 | js->user->node, js->user->domain); |
|
17815
232d57a6b6df
Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents:
17814
diff
changeset
|
1113 | if(account->registration_cb) |
|
232d57a6b6df
Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents:
17814
diff
changeset
|
1114 | (account->registration_cb)(account, TRUE, account->registration_cb_user_data); |
|
25604
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1115 | } else { |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1116 | g_return_if_fail(to != NULL); |
|
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
|
1117 | 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
|
1118 | to); |
|
25604
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1119 | } |
| 15884 | 1120 | purple_notify_info(NULL, _("Registration Successful"), |
| 7072 | 1121 | _("Registration Successful"), buf); |
| 1122 | g_free(buf); | |
| 1123 | } else { | |
|
21150
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
1124 | char *msg = jabber_parse_error(js, packet, NULL); |
| 7072 | 1125 | |
| 8401 | 1126 | if(!msg) |
| 1127 | msg = g_strdup(_("Unknown Error")); | |
| 7072 | 1128 | |
| 15884 | 1129 | purple_notify_error(NULL, _("Registration Failed"), |
| 8401 | 1130 | _("Registration Failed"), msg); |
| 1131 | g_free(msg); | |
|
17815
232d57a6b6df
Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents:
17814
diff
changeset
|
1132 | if(account->registration_cb) |
|
232d57a6b6df
Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents:
17814
diff
changeset
|
1133 | (account->registration_cb)(account, FALSE, account->registration_cb_user_data); |
| 7072 | 1134 | } |
|
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
|
1135 | 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
|
1136 | if(js->registration) |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1137 | jabber_connection_schedule_close(js); |
| 7072 | 1138 | } |
| 1139 | ||
| 1140 | static void | |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1141 | jabber_unregistration_result_cb(JabberStream *js, const char *from, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1142 | JabberIqType type, const char *id, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1143 | xmlnode *packet, gpointer data) |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1144 | { |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1145 | char *buf; |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1146 | char *to = data; |
|
25604
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1147 | |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1148 | /* This function is never called for unregistering our XMPP account from |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1149 | * the server, so there should always be a 'to' address. */ |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1150 | g_return_if_fail(to != NULL); |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1151 | |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1152 | if (type == JABBER_IQ_RESULT) { |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1153 | 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
|
1154 | to); |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1155 | purple_notify_info(NULL, _("Unregistration Successful"), |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1156 | _("Unregistration Successful"), buf); |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1157 | g_free(buf); |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1158 | } else { |
|
21150
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
1159 | char *msg = jabber_parse_error(js, packet, NULL); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1160 | |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1161 | if(!msg) |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1162 | msg = g_strdup(_("Unknown Error")); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1163 | |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1164 | purple_notify_error(NULL, _("Unregistration Failed"), |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1165 | _("Unregistration Failed"), msg); |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1166 | g_free(msg); |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1167 | } |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1168 | g_free(to); |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1169 | } |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1170 | |
|
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
|
1171 | 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
|
1172 | 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
|
1173 | 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
|
1174 | } 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
|
1175 | |
| 7072 | 1176 | 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
|
1177 | jabber_register_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields) |
| 7072 | 1178 | { |
| 1179 | GList *groups, *flds; | |
| 1180 | xmlnode *query, *y; | |
| 1181 | JabberIq *iq; | |
| 7264 | 1182 | char *username; |
| 7072 | 1183 | |
|
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
|
1184 | iq = jabber_iq_new_query(cbdata->js, JABBER_IQ_SET, "jabber:iq:register"); |
| 7072 | 1185 | query = xmlnode_get_child(iq->node, "query"); |
|
25604
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1186 | if (cbdata->who) |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1187 | xmlnode_set_attrib(iq->node, "to", cbdata->who); |
| 7072 | 1188 | |
| 15884 | 1189 | for(groups = purple_request_fields_get_groups(fields); groups; |
| 7072 | 1190 | groups = groups->next) { |
| 15884 | 1191 | for(flds = purple_request_field_group_get_fields(groups->data); |
| 7072 | 1192 | flds; flds = flds->next) { |
| 15884 | 1193 | PurpleRequestField *field = flds->data; |
| 1194 | 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
|
1195 | if(!strcmp(id,"unregister")) { |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1196 | 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
|
1197 | if(value) { |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1198 | /* 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
|
1199 | (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
|
1200 | jabber_iq_free(iq); |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1201 | 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
|
1202 | query = xmlnode_get_child(iq->node, "query"); |
|
25604
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1203 | if (cbdata->who) |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1204 | xmlnode_set_attrib(iq->node,"to",cbdata->who); |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1205 | xmlnode_new_child(query, "remove"); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1206 | |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1207 | jabber_iq_set_callback(iq, jabber_unregistration_result_cb, cbdata->who); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1208 | |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1209 | jabber_iq_send(iq); |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1210 | g_free(cbdata); |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1211 | return; |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1212 | } |
| 7072 | 1213 | } else { |
|
28656
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1214 | const char *ids[] = {"username", "password", "name", "email", "nick", "first", |
|
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1215 | "last", "address", "city", "state", "zip", "phone", "url", "date", |
|
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1216 | NULL}; |
|
28610
c914f0e55687
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents:
28583
diff
changeset
|
1217 | const char *value = purple_request_field_string_get_value(field); |
|
28656
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1218 | int i; |
|
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1219 | for (i = 0; ids[i]; i++) { |
|
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1220 | if (!strcmp(id, ids[i])) |
|
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1221 | break; |
|
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1222 | } |
|
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1223 | |
|
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1224 | if (!ids[i]) |
|
28610
c914f0e55687
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents:
28583
diff
changeset
|
1225 | continue; |
|
28656
d003bf9b787e
A leak fix in the candidate list, and some code simplification.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
28623
diff
changeset
|
1226 | y = xmlnode_new_child(query, ids[i]); |
|
28610
c914f0e55687
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents:
28583
diff
changeset
|
1227 | 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
|
1228 | if(cbdata->js->registration && !strcmp(id, "username")) { |
|
25604
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1229 | g_free(cbdata->js->user->node); |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1230 | cbdata->js->user->node = g_strdup(value); |
|
28610
c914f0e55687
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents:
28583
diff
changeset
|
1231 | } |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1232 | 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
|
1233 | purple_account_set_password(cbdata->js->gc->account, value); |
|
28610
c914f0e55687
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents:
28583
diff
changeset
|
1234 | } |
| 7072 | 1235 | } |
| 1236 | } | |
| 1237 | ||
|
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
|
1238 | if(cbdata->js->registration) { |
|
28610
c914f0e55687
Prevent a NULL sprintf(%s) when no resource is assigned to an account during inband registration. Fixes #10420.
Daniel Atallah <datallah@pidgin.im>
parents:
28583
diff
changeset
|
1239 | username = g_strdup_printf("%s@%s%s%s", cbdata->js->user->node, cbdata->js->user->domain, |
|
29035
7e9ba5e8177b
*** Plucked rev 941f01ed2234f8e476b7260fbd6ea873583387f7 (f05c54b03e6bbfdbff38c01697fbd353a969e05e):
Daniel Atallah <datallah@pidgin.im>
parents:
28984
diff
changeset
|
1240 | cbdata->js->user->resource ? "/" : "", |
|
7e9ba5e8177b
*** Plucked rev 941f01ed2234f8e476b7260fbd6ea873583387f7 (f05c54b03e6bbfdbff38c01697fbd353a969e05e):
Daniel Atallah <datallah@pidgin.im>
parents:
28984
diff
changeset
|
1241 | cbdata->js->user->resource ? cbdata->js->user->resource : ""); |
|
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
|
1242 | 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
|
1243 | 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
|
1244 | } |
| 7264 | 1245 | |
|
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
|
1246 | jabber_iq_set_callback(iq, jabber_registration_result_cb, cbdata->who); |
| 7072 | 1247 | |
| 1248 | 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
|
1249 | g_free(cbdata); |
| 7072 | 1250 | } |
| 1251 | ||
| 1252 | 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
|
1253 | jabber_register_cancel_cb(JabberRegisterCBData *cbdata, PurpleRequestFields *fields) |
| 7072 | 1254 | { |
|
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
|
1255 | 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
|
1256 | 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
|
1257 | if(account->registration_cb) |
|
17815
232d57a6b6df
Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents:
17814
diff
changeset
|
1258 | (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
|
1259 | jabber_connection_schedule_close(cbdata->js); |
|
20320
6337e101f6ab
Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20316
diff
changeset
|
1260 | } |
|
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
|
1261 | 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
|
1262 | g_free(cbdata); |
| 7072 | 1263 | } |
| 1264 | ||
| 7923 | 1265 | static void jabber_register_x_data_cb(JabberStream *js, xmlnode *result, gpointer data) |
| 1266 | { | |
| 1267 | xmlnode *query; | |
| 1268 | 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
|
1269 | char *to = data; |
| 7923 | 1270 | |
| 1271 | iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register"); | |
| 1272 | query = xmlnode_get_child(iq->node, "query"); | |
|
25604
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1273 | if (to) |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1274 | xmlnode_set_attrib(iq->node,"to",to); |
| 7923 | 1275 | |
| 1276 | xmlnode_insert_child(query, result); | |
| 1277 | ||
|
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
|
1278 | jabber_iq_set_callback(iq, jabber_registration_result_cb, to); |
| 7923 | 1279 | jabber_iq_send(iq); |
| 1280 | } | |
| 1281 | ||
|
26924
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1282 | static const struct { |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1283 | const char *name; |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1284 | const char *label; |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1285 | } registration_fields[] = { |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1286 | { "email", N_("Email") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1287 | { "nick", N_("Nickname") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1288 | { "first", N_("First name") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1289 | { "last", N_("Last name") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1290 | { "address", N_("Address") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1291 | { "city", N_("City") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1292 | { "state", N_("State") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1293 | { "zip", N_("Postal code") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1294 | { "phone", N_("Phone") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1295 | { "url", N_("URL") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1296 | { "date", N_("Date") }, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1297 | { NULL, NULL } |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1298 | }; |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1299 | |
|
25817
09d6a40a341d
Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents:
25814
diff
changeset
|
1300 | void jabber_register_parse(JabberStream *js, const char *from, JabberIqType type, |
|
09d6a40a341d
Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents:
25814
diff
changeset
|
1301 | const char *id, xmlnode *query) |
| 7072 | 1302 | { |
|
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
|
1303 | PurpleAccount *account = purple_connection_get_account(js->gc); |
|
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
|
1304 | 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
|
1305 | 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
|
1306 | PurpleRequestField *field; |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1307 | xmlnode *x, *y, *node; |
|
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
|
1308 | 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
|
1309 | JabberRegisterCBData *cbdata; |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1310 | gboolean registered = FALSE; |
|
26924
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1311 | int i; |
| 7072 | 1312 | |
|
25817
09d6a40a341d
Pass IQ handlers type, from, id, and the child node
Paul Aurich <darkrain42@pidgin.im>
parents:
25814
diff
changeset
|
1313 | if (type != JABBER_IQ_RESULT) |
| 14356 | 1314 | return; |
| 1315 | ||
|
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
|
1316 | if(js->registration) { |
| 7072 | 1317 | /* get rid of the login thingy */ |
| 15884 | 1318 | 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
|
1319 | } |
| 7072 | 1320 | |
|
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
|
1321 | 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
|
1322 | 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
|
1323 | |
|
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
|
1324 | if(js->registration) { |
| 15884 | 1325 | 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
|
1326 | _("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
|
1327 | if(account->registration_cb) |
|
17815
232d57a6b6df
Simplified registration callback per request of Sean.
Andreas Monitzer <am@adiumx.com>
parents:
17814
diff
changeset
|
1328 | (account->registration_cb)(account, FALSE, account->registration_cb_user_data); |
| 7072 | 1329 | jabber_connection_schedule_close(js); |
| 1330 | return; | |
| 1331 | } | |
|
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
|
1332 | } |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1333 | |
|
25573
6937721bb0a1
The jabber_register_parse function was looking for the <x> node as a
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25552
diff
changeset
|
1334 | if((x = xmlnode_get_child_with_namespace(query, "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
|
1335 | 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
|
1336 | 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
|
1337 | |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
1338 | } else if((x = xmlnode_get_child_with_namespace(query, "x", NS_OOB_X_DATA))) { |
|
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
|
1339 | xmlnode *url; |
| 7923 | 1340 | |
|
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
|
1341 | 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
|
1342 | 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
|
1343 | 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
|
1344 | 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
|
1345 | 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
|
1346 | |
|
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
|
1347 | 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
|
1348 | 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
|
1349 | 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
|
1350 | (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
|
1351 | jabber_connection_schedule_close(js); |
| 8398 | 1352 | } |
|
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
|
1353 | return; |
| 7923 | 1354 | } |
| 1355 | } | |
|
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
|
1356 | } |
| 7923 | 1357 | |
|
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
|
1358 | /* as a last resort, use the old jabber:iq:register syntax */ |
| 7923 | 1359 | |
|
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
|
1360 | 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
|
1361 | 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
|
1362 | purple_request_fields_add_group(fields, group); |
| 7072 | 1363 | |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1364 | if((node = xmlnode_get_child(query, "username"))) { |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1365 | char *data = xmlnode_get_data(node); |
|
26583
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1366 | if(js->registration) |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1367 | field = purple_request_field_string_new("username", _("Username"), data ? data : js->user->node, FALSE); |
|
26583
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1368 | else |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1369 | field = purple_request_field_string_new("username", _("Username"), data, FALSE); |
|
26583
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1370 | |
|
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1371 | purple_request_field_group_add_field(group, field); |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1372 | g_free(data); |
|
26583
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1373 | } |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1374 | if((node = xmlnode_get_child(query, "password"))) { |
|
26583
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1375 | if(js->registration) |
|
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1376 | field = purple_request_field_string_new("password", _("Password"), |
|
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1377 | purple_connection_get_password(js->gc), FALSE); |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1378 | else { |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1379 | char *data = xmlnode_get_data(node); |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1380 | field = purple_request_field_string_new("password", _("Password"), data, FALSE); |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1381 | g_free(data); |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1382 | } |
|
26583
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1383 | |
|
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1384 | purple_request_field_string_set_masked(field, TRUE); |
|
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1385 | purple_request_field_group_add_field(group, field); |
|
e115c7ef2fcf
Applied disco-2.patch from nops with some modifications:
Paul Aurich <darkrain42@pidgin.im>
parents:
26086
diff
changeset
|
1386 | } |
|
26924
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1387 | |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1388 | if((node = 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
|
1389 | if(js->registration) |
| 15884 | 1390 | 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
|
1391 | purple_account_get_alias(js->gc->account), FALSE); |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1392 | else { |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1393 | char *data = xmlnode_get_data(node); |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1394 | field = purple_request_field_string_new("name", _("Name"), data, FALSE); |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1395 | g_free(data); |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1396 | } |
|
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
|
1397 | 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
|
1398 | } |
|
26924
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1399 | |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1400 | for (i = 0; registration_fields[i].name != NULL; ++i) { |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1401 | if ((node = xmlnode_get_child(query, registration_fields[i].name))) { |
|
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1402 | char *data = xmlnode_get_data(node); |
|
26924
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1403 | field = purple_request_field_string_new(registration_fields[i].name, |
|
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1404 | _(registration_fields[i].label), |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1405 | data, FALSE); |
|
26924
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1406 | purple_request_field_group_add_field(group, field); |
|
26927
4676609b1855
Use defaults provided by the server where applicable and when available
Paul Aurich <darkrain42@pidgin.im>
parents:
26924
diff
changeset
|
1407 | g_free(data); |
|
26924
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1408 | } |
|
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
|
1409 | } |
|
26924
fb6574724452
This is a little less...repetitious
Paul Aurich <darkrain42@pidgin.im>
parents:
26922
diff
changeset
|
1410 | |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1411 | if(registered) { |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1412 | 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
|
1413 | 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
|
1414 | } |
| 7072 | 1415 | |
|
20320
6337e101f6ab
Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20316
diff
changeset
|
1416 | if((y = xmlnode_get_child(query, "instructions"))) |
|
6337e101f6ab
Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20316
diff
changeset
|
1417 | instructions = xmlnode_get_data(y); |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1418 | else if(registered) |
|
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1419 | 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
|
1420 | "to change your account registration.")); |
|
20320
6337e101f6ab
Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20316
diff
changeset
|
1421 | else |
|
6337e101f6ab
Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20316
diff
changeset
|
1422 | instructions = g_strdup(_("Please fill out the information below " |
|
6337e101f6ab
Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20316
diff
changeset
|
1423 | "to register your new account.")); |
| 7072 | 1424 | |
|
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
|
1425 | 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
|
1426 | 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
|
1427 | cbdata->who = g_strdup(from); |
| 7072 | 1428 | |
|
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
|
1429 | if(js->registration) |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
1430 | 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
|
1431 | _("Register New XMPP Account"), instructions, fields, |
| 7072 | 1432 | _("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
|
1433 | _("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
|
1434 | purple_connection_get_account(js->gc), NULL, NULL, |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
1435 | 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
|
1436 | else { |
|
25604
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1437 | char *title; |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1438 | g_return_if_fail(from != NULL); |
|
c963986ac373
Don't send a 'to' attribute on an outgoing stanza if we didn't receive one.
Paul Aurich <darkrain42@pidgin.im>
parents:
25600
diff
changeset
|
1439 | title = registered ? g_strdup_printf(_("Change Account Registration at %s"), from) |
|
18755
8c4ddce1fb46
Added the ability to unregister from a gateway.
Andreas Monitzer <am@adiumx.com>
parents:
18718
diff
changeset
|
1440 | :g_strdup_printf(_("Register New Account at %s"), from); |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
1441 | 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
|
1442 | 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
|
1443 | (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
|
1444 | _("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
|
1445 | purple_connection_get_account(js->gc), NULL, NULL, |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
1446 | 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
|
1447 | 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
|
1448 | } |
|
14140
fcb570e0b2db
[gaim-migrate @ 16699]
Daniel Atallah <datallah@pidgin.im>
parents:
14115
diff
changeset
|
1449 | |
|
20320
6337e101f6ab
Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20316
diff
changeset
|
1450 | g_free(instructions); |
|
6337e101f6ab
Plug some memory leaks.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20316
diff
changeset
|
1451 | } |
| 7072 | 1452 | |
| 8016 | 1453 | void jabber_register_start(JabberStream *js) |
| 7072 | 1454 | { |
| 1455 | JabberIq *iq; | |
| 1456 | ||
| 1457 | iq = jabber_iq_new_query(js, JABBER_IQ_GET, "jabber:iq:register"); | |
| 1458 | jabber_iq_send(iq); | |
| 1459 | } | |
| 1460 | ||
|
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
|
1461 | 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
|
1462 | JabberIq *iq; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1463 | |
|
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
|
1464 | 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
|
1465 | 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
|
1466 | 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
|
1467 | } |
|
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
|
1468 | |
|
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
|
1469 | void jabber_register_account(PurpleAccount *account) |
| 7072 | 1470 | { |
| 1471 | JabberStream *js; | |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1472 | |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1473 | js = jabber_stream_new(account); |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1474 | if (js == NULL) |
| 7310 | 1475 | return; |
|
27850
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1476 | |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1477 | js->registration = TRUE; |
|
3087baaf7831
Refactor jabber_login and jabber_register_account
Paul Aurich <darkrain42@pidgin.im>
parents:
27779
diff
changeset
|
1478 | jabber_stream_connect(js); |
| 7072 | 1479 | } |
| 1480 | ||
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1481 | static void |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1482 | jabber_unregister_account_iq_cb(JabberStream *js, const char *from, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1483 | JabberIqType type, const char *id, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1484 | xmlnode *packet, gpointer data) |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1485 | { |
|
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
|
1486 | PurpleAccount *account = purple_connection_get_account(js->gc); |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1487 | |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1488 | if (type == JABBER_IQ_ERROR) { |
|
21150
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
1489 | char *msg = jabber_parse_error(js, packet, NULL); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1490 | |
|
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
|
1491 | 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
|
1492 | _("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
|
1493 | 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
|
1494 | if(js->unregistration_cb) |
|
18995
6ba7743720cb
Mixed up TRUE and FALSE.
Andreas Monitzer <am@adiumx.com>
parents:
18994
diff
changeset
|
1495 | js->unregistration_cb(account, FALSE, js->unregistration_user_data); |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1496 | } else { |
|
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
|
1497 | 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
|
1498 | _("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
|
1499 | if(js->unregistration_cb) |
|
18995
6ba7743720cb
Mixed up TRUE and FALSE.
Andreas Monitzer <am@adiumx.com>
parents:
18994
diff
changeset
|
1500 | 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
|
1501 | } |
|
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
|
1502 | } |
|
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
|
1503 | |
|
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
|
1504 | 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
|
1505 | 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
|
1506 | 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
|
1507 | |
|
854d2a4c99b6
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents:
19993
diff
changeset
|
1508 | 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
|
1509 | |
|
854d2a4c99b6
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents:
19993
diff
changeset
|
1510 | 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
|
1511 | |
|
854d2a4c99b6
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents:
19993
diff
changeset
|
1512 | 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
|
1513 | |
|
854d2a4c99b6
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents:
19993
diff
changeset
|
1514 | 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
|
1515 | 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
|
1516 | |
|
854d2a4c99b6
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents:
19993
diff
changeset
|
1517 | 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
|
1518 | 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
|
1519 | } |
|
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
|
1520 | |
|
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
|
1521 | 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
|
1522 | 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
|
1523 | JabberStream *js; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1524 | |
|
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
|
1525 | 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
|
1526 | 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
|
1527 | 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
|
1528 | 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
|
1529 | 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
|
1530 | 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
|
1531 | 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
|
1532 | 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
|
1533 | } |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1534 | |
|
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
|
1535 | 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
|
1536 | |
|
854d2a4c99b6
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents:
19993
diff
changeset
|
1537 | 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
|
1538 | 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
|
1539 | return; |
|
854d2a4c99b6
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents:
19993
diff
changeset
|
1540 | } |
|
854d2a4c99b6
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents:
19993
diff
changeset
|
1541 | |
|
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
|
1542 | 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
|
1543 | 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
|
1544 | 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
|
1545 | |
|
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
|
1546 | 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
|
1547 | } |
|
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
|
1548 | |
|
25727
1440163769e6
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25726
diff
changeset
|
1549 | /* TODO: As Will pointed out in IRC, after being notified by the core to |
|
1440163769e6
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25726
diff
changeset
|
1550 | * shutdown, we should async. wait for the server to send us the stream |
|
1440163769e6
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25726
diff
changeset
|
1551 | * termination before destorying everything. That seems like it would require |
|
1440163769e6
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25726
diff
changeset
|
1552 | * changing the semantics of prpl->close(), so it's a good idea for 3.0.0. |
|
1440163769e6
*** Plucked rev 4831edb9 (darkrain42@pidgin.im):
Paul Aurich <darkrain42@pidgin.im>
parents:
25726
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_close(PurpleConnection *gc) |
| 2086 | 1555 | { |
|
29264
ea88690768fe
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents:
29263
diff
changeset
|
1556 | JabberStream *js = purple_connection_get_protocol_data(gc); |
| 2956 | 1557 | |
|
23717
5a7e463b226d
Further decoupled Jingle code from jabber.c:
Michael Ruprecht <maiku@pidgin.im>
parents:
23716
diff
changeset
|
1558 | /* 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
|
1559 | 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
|
1560 | |
|
29264
ea88690768fe
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents:
29263
diff
changeset
|
1561 | if (js->bosh) |
|
ea88690768fe
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents:
29263
diff
changeset
|
1562 | jabber_bosh_connection_close(js->bosh); |
|
ea88690768fe
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents:
29263
diff
changeset
|
1563 | else if ((js->gsc && js->gsc->fd > 0) || js->fd > 0) |
| 14003 | 1564 | jabber_send_raw(js, "</stream:stream>", -1); |
| 3311 | 1565 | |
|
14370
12ef3d4096ee
[gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents:
14358
diff
changeset
|
1566 | if (js->srv_query_data) |
| 15884 | 1567 | purple_srv_cancel(js->srv_query_data); |
|
14370
12ef3d4096ee
[gaim-migrate @ 16998]
Mark Doliner <markdoliner@pidgin.im>
parents:
14358
diff
changeset
|
1568 | |
| 7014 | 1569 | if(js->gsc) { |
|
29264
ea88690768fe
jabber: Remove a funky workaround for an (old) OpenSSL crash.
Paul Aurich <darkrain42@pidgin.im>
parents:
29263
diff
changeset
|
1570 | purple_ssl_close(js->gsc); |
| 8360 | 1571 | } else if (js->fd > 0) { |
| 7072 | 1572 | if(js->gc->inpa) |
| 15884 | 1573 | purple_input_remove(js->gc->inpa); |
| 7014 | 1574 | close(js->fd); |
| 1575 | } | |
|
15363
f6b9d1e3d0cb
[gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents:
15344
diff
changeset
|
1576 | |
|
24873
7d1e91d5ec46
Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents:
24872
diff
changeset
|
1577 | if (js->bosh) |
|
7d1e91d5ec46
Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents:
24872
diff
changeset
|
1578 | jabber_bosh_connection_destroy(js->bosh); |
|
7d1e91d5ec46
Jabber BOSH: more fixes.
Paul Aurich <darkrain42@pidgin.im>
parents:
24872
diff
changeset
|
1579 | |
|
15363
f6b9d1e3d0cb
[gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents:
15344
diff
changeset
|
1580 | jabber_buddy_remove_all_pending_buddy_info_requests(js); |
|
f6b9d1e3d0cb
[gaim-migrate @ 18092]
Evan Schoenberg <evands@pidgin.im>
parents:
15344
diff
changeset
|
1581 | |
|
17810
c8d4297080cb
Fixed a leak: The XML parser was never cleaned up on disconnect.
Andreas Monitzer <am@adiumx.com>
parents:
17806
diff
changeset
|
1582 | 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
|
1583 | |
| 8312 | 1584 | if(js->iq_callbacks) |
| 1585 | g_hash_table_destroy(js->iq_callbacks); | |
| 7072 | 1586 | if(js->buddies) |
| 1587 | g_hash_table_destroy(js->buddies); | |
| 1588 | if(js->chats) | |
| 1589 | 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
|
1590 | |
| 8043 | 1591 | while(js->chat_servers) { |
| 1592 | g_free(js->chat_servers->data); | |
| 1593 | js->chat_servers = g_list_delete_link(js->chat_servers, js->chat_servers); | |
| 1594 | } | |
|
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
|
1595 | |
| 11675 | 1596 | while(js->user_directories) { |
| 1597 | g_free(js->user_directories->data); | |
| 1598 | js->user_directories = g_list_delete_link(js->user_directories, js->user_directories); | |
| 1599 | } | |
|
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
|
1600 | |
|
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
|
1601 | 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
|
1602 | 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
|
1603 | 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
|
1604 | 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
|
1605 | 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
|
1606 | 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
|
1607 | 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
|
1608 | } |
|
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
|
1609 | |
|
24012
913d6f18cb95
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents:
23911
diff
changeset
|
1610 | while(js->url_datas) { |
|
913d6f18cb95
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents:
23911
diff
changeset
|
1611 | 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
|
1612 | 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
|
1613 | } |
|
913d6f18cb95
Restrict buddy icon downloads from arbitrary urls to 200kB.
Daniel Atallah <datallah@pidgin.im>
parents:
23911
diff
changeset
|
1614 | |
|
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
|
1615 | g_free(js->stream_id); |
| 7587 | 1616 | if(js->user) |
| 1617 | jabber_id_free(js->user); | |
|
25811
57012229a242
Use a JabberStream variable instead of a setting for the initial hash
Paul Aurich <darkrain42@pidgin.im>
parents:
25808
diff
changeset
|
1618 | g_free(js->initial_avatar_hash); |
|
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
|
1619 | g_free(js->avatar_hash); |
|
24716
047f5075ca58
Entity Capabilities must be per-JabberStream
Paul Aurich <darkrain42@pidgin.im>
parents:
24715
diff
changeset
|
1620 | g_free(js->caps_hash); |
|
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
|
1621 | |
|
30032
02bd634e0591
jabber: Stifle an assertion warning.
Paul Aurich <darkrain42@pidgin.im>
parents:
30013
diff
changeset
|
1622 | if (js->write_buffer) |
|
02bd634e0591
jabber: Stifle an assertion warning.
Paul Aurich <darkrain42@pidgin.im>
parents:
30013
diff
changeset
|
1623 | purple_circ_buffer_destroy(js->write_buffer); |
|
13201
8c224ef70efa
[gaim-migrate @ 15563]
Daniel Atallah <datallah@pidgin.im>
parents:
13154
diff
changeset
|
1624 | if(js->writeh) |
| 15884 | 1625 | purple_input_remove(js->writeh); |
|
28866
e3d867ce000b
jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <darkrain42@pidgin.im>
parents:
28855
diff
changeset
|
1626 | if (js->auth_mech && js->auth_mech->dispose) |
|
e3d867ce000b
jabber: Complete (though untested) SCRAM implementation.
Paul Aurich <darkrain42@pidgin.im>
parents:
28855
diff
changeset
|
1627 | js->auth_mech->dispose(js); |
| 12508 | 1628 | #ifdef HAVE_CYRUS_SASL |
| 1629 | if(js->sasl) | |
| 1630 | sasl_dispose(&js->sasl); | |
| 1631 | if(js->sasl_mechs) | |
| 1632 | 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
|
1633 | g_free(js->sasl_cb); |
|
18449
2d2df64f4303
applied changes from f9186fabb483b56a9d7e8fb7241b2520e9930413
William Ehlhardt <williamehlhardt@gmail.com>
parents:
18235
diff
changeset
|
1634 | #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
|
1635 | 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
|
1636 | 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
|
1637 | 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
|
1638 | 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
|
1639 | g_free(cmd->node); |
| 17827 | 1640 | 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
|
1641 | 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
|
1642 | 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
|
1643 | } |
| 15198 | 1644 | 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
|
1645 | g_free(js->certificate_CN); |
| 15225 | 1646 | g_free(js->gmail_last_time); |
| 1647 | 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
|
1648 | 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
|
1649 | 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
|
1650 | 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
|
1651 | 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
|
1652 | 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
|
1653 | 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
|
1654 | g_free(js->old_track); |
|
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
|
1655 | |
|
28046
8b6fcc2c95b3
jabber: Fix setting Google Talk avatar at login.
Paul Aurich <darkrain42@pidgin.im>
parents:
27924
diff
changeset
|
1656 | if (js->vcard_timer != 0) |
|
8b6fcc2c95b3
jabber: Fix setting Google Talk avatar at login.
Paul Aurich <darkrain42@pidgin.im>
parents:
27924
diff
changeset
|
1657 | purple_timeout_remove(js->vcard_timer); |
|
8b6fcc2c95b3
jabber: Fix setting Google Talk avatar at login.
Paul Aurich <darkrain42@pidgin.im>
parents:
27924
diff
changeset
|
1658 | |
|
27304
b2dc447b8c0b
The XMPP keepalive timeout handle needs to be a guint.
Paul Aurich <darkrain42@pidgin.im>
parents:
27293
diff
changeset
|
1659 | if (js->keepalive_timeout != 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
|
1660 | purple_timeout_remove(js->keepalive_timeout); |
|
30056
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
1661 | if (js->inactivity_timer != 0) |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
1662 | purple_timeout_remove(js->inactivity_timer); |
|
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
|
1663 | |
|
f8989c154a60
Add support for using multiple "xmpp-client" records on a domain, by trying the
Daniel Atallah <datallah@pidgin.im>
parents:
23539
diff
changeset
|
1664 | 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
|
1665 | 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
|
1666 | |
|
26286
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
1667 | g_free(js->stun_ip); |
|
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
1668 | js->stun_ip = NULL; |
|
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
1669 | |
|
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
1670 | /* cancel DNS query for STUN, if one is ongoing */ |
|
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
1671 | if (js->stun_query) { |
|
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
1672 | purple_dnsquery_destroy(js->stun_query); |
|
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
1673 | js->stun_query = NULL; |
|
443041606e32
Add automatic discovery of GTalk STUN servers when using a Gtalk account
Marcus Lundblad <malu@pidgin.im>
parents:
26269
diff
changeset
|
1674 | } |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
1675 | |
|
23911
f54fe603e84a
Fix a stupid mistake in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
23910
diff
changeset
|
1676 | g_free(js); |
|
f54fe603e84a
Fix a stupid mistake in the previous commit.
Daniel Atallah <datallah@pidgin.im>
parents:
23910
diff
changeset
|
1677 | |
|
11389
c1e05b75b0b0
[gaim-migrate @ 13617]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
11387
diff
changeset
|
1678 | gc->proto_data = NULL; |
| 5093 | 1679 | } |
| 1680 | ||
| 7014 | 1681 | void jabber_stream_set_state(JabberStream *js, JabberStreamState state) |
|
3105
8c23b0ec1036
[gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3074
diff
changeset
|
1682 | { |
|
28623
4f7f9d7bb23d
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
28610
diff
changeset
|
1683 | #define JABBER_CONNECT_STEPS ((js->gsc || js->state == JABBER_STREAM_INITIALIZING_ENCRYPTION) ? 9 : 5) |
|
4f7f9d7bb23d
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
28610
diff
changeset
|
1684 | |
| 7014 | 1685 | js->state = state; |
| 1686 | switch(state) { | |
| 1687 | case JABBER_STREAM_OFFLINE: | |
| 1688 | break; | |
| 1689 | case JABBER_STREAM_CONNECTING: | |
| 15884 | 1690 | purple_connection_update_progress(js->gc, _("Connecting"), 1, |
| 7014 | 1691 | JABBER_CONNECT_STEPS); |
| 1692 | break; | |
| 1693 | case JABBER_STREAM_INITIALIZING: | |
| 15884 | 1694 | purple_connection_update_progress(js->gc, _("Initializing Stream"), |
| 7014 | 1695 | js->gsc ? 5 : 2, JABBER_CONNECT_STEPS); |
| 1696 | jabber_stream_init(js); | |
| 1697 | 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
|
1698 | 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
|
1699 | 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
|
1700 | 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
|
1701 | break; |
| 7014 | 1702 | case JABBER_STREAM_AUTHENTICATING: |
| 15884 | 1703 | 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
|
1704 | js->gsc ? 7 : 3, JABBER_CONNECT_STEPS); |
| 7014 | 1705 | break; |
|
28379
df144a809a92
jabber: Fix using BOSH and legacy auth together. Closes #9990.
Paul Aurich <darkrain42@pidgin.im>
parents:
28322
diff
changeset
|
1706 | case JABBER_STREAM_POST_AUTH: |
| 15884 | 1707 | 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
|
1708 | (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
|
1709 | |
| 7014 | 1710 | break; |
| 1711 | case JABBER_STREAM_CONNECTED: | |
|
27278
b34a1cea4872
Use js->state to track whether the roster has been retrieved.
Paul Aurich <darkrain42@pidgin.im>
parents:
27231
diff
changeset
|
1712 | /* Send initial presence */ |
|
b34a1cea4872
Use js->state to track whether the roster has been retrieved.
Paul Aurich <darkrain42@pidgin.im>
parents:
27231
diff
changeset
|
1713 | jabber_presence_send(js, TRUE); |
|
30056
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
1714 | /* Start up the inactivity timer */ |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
1715 | jabber_stream_restart_inactivity_timer(js); |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
1716 | |
| 15884 | 1717 | purple_connection_set_state(js->gc, PURPLE_CONNECTED); |
| 7014 | 1718 | break; |
|
3105
8c23b0ec1036
[gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3074
diff
changeset
|
1719 | } |
|
28623
4f7f9d7bb23d
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
28610
diff
changeset
|
1720 | |
|
4f7f9d7bb23d
jabber: Re-arrange the code that detects legacy servers so that we don't stomp over "Host Unknown" errors.
Paul Aurich <darkrain42@pidgin.im>
parents:
28610
diff
changeset
|
1721 | #undef JABBER_CONNECT_STEPS |
|
3105
8c23b0ec1036
[gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3074
diff
changeset
|
1722 | } |
|
8c23b0ec1036
[gaim-migrate @ 3119]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3074
diff
changeset
|
1723 | |
| 7014 | 1724 | char *jabber_get_next_id(JabberStream *js) |
| 2086 | 1725 | { |
| 15884 | 1726 | return g_strdup_printf("purple%x", js->next_id++); |
| 2086 | 1727 | } |
| 1728 | ||
|
14453
1cc75906700c
[gaim-migrate @ 17098]
Mark Doliner <markdoliner@pidgin.im>
parents:
14375
diff
changeset
|
1729 | |
|
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
|
1730 | void jabber_idle_set(PurpleConnection *gc, int idle) |
|
3340
7e59a209931d
[gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3337
diff
changeset
|
1731 | { |
| 7014 | 1732 | JabberStream *js = gc->proto_data; |
|
3340
7e59a209931d
[gaim-migrate @ 3359]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3337
diff
changeset
|
1733 | |
| 7014 | 1734 | js->idle = idle ? time(NULL) - idle : idle; |
|
26946
d33862e3c96f
propagate from branch 'im.pidgin.pidgin' (head a495982a23a92e75616731c8f41a2b007670d0da)
Paul Aurich <darkrain42@pidgin.im>
diff
changeset
|
1735 | |
|
24676
27ea4d447838
A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <malu@pidgin.im>
parents:
24430
diff
changeset
|
1736 | /* send out an updated prescence */ |
|
27ea4d447838
A first stab at supporting the upcoming new use-case in XMPP XEP-0012
Marcus Lundblad <malu@pidgin.im>
parents:
24430
diff
changeset
|
1737 | purple_debug_info("jabber", "sending updated presence for idle\n"); |
| 26959 | 1738 | jabber_presence_send(js, FALSE); |
|
3314
12fa45677717
[gaim-migrate @ 3332]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3311
diff
changeset
|
1739 | } |
|
12fa45677717
[gaim-migrate @ 3332]
Jim Seymour <jseymour@users.sourceforge.net>
parents:
3311
diff
changeset
|
1740 | |
|
27175
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1741 | void jabber_blocklist_parse_push(JabberStream *js, const char *from, |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1742 | JabberIqType type, const char *id, |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1743 | xmlnode *child) |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1744 | { |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1745 | JabberIq *result; |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1746 | xmlnode *item; |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1747 | PurpleAccount *account; |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1748 | gboolean is_block; |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1749 | |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1750 | if (!jabber_is_own_account(js, from)) { |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1751 | xmlnode *error, *x; |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1752 | result = jabber_iq_new(js, JABBER_IQ_ERROR); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1753 | xmlnode_set_attrib(result->node, "id", id); |
|
27182
641a77b2ee97
No, I had that right the first time; if it's not our account, then there *is* a from and we need to route the IQ to the proper place.
Paul Aurich <darkrain42@pidgin.im>
parents:
27181
diff
changeset
|
1754 | if (from) |
|
641a77b2ee97
No, I had that right the first time; if it's not our account, then there *is* a from and we need to route the IQ to the proper place.
Paul Aurich <darkrain42@pidgin.im>
parents:
27181
diff
changeset
|
1755 | xmlnode_set_attrib(result->node, "to", from); |
|
27175
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1756 | |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1757 | error = xmlnode_new_child(result->node, "error"); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1758 | xmlnode_set_attrib(error, "type", "cancel"); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1759 | x = xmlnode_new_child(error, "not-allowed"); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
1760 | xmlnode_set_namespace(x, NS_XMPP_STANZAS); |
|
27175
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1761 | |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1762 | jabber_iq_send(result); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1763 | return; |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1764 | } |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1765 | |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1766 | account = purple_connection_get_account(js->gc); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1767 | is_block = g_str_equal(child->name, "block"); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1768 | |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1769 | item = xmlnode_get_child(child, "item"); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1770 | if (!is_block && item == NULL) { |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1771 | /* Unblock everyone */ |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1772 | purple_debug_info("jabber", "Received unblock push. Unblocking everyone.\n"); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1773 | |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1774 | while (account->deny != NULL) { |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1775 | purple_privacy_deny_remove(account, account->deny->data, TRUE); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1776 | } |
|
27181
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1777 | } else if (item == NULL) { |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1778 | /* An empty <block/> is bogus */ |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1779 | xmlnode *error, *x; |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1780 | result = jabber_iq_new(js, JABBER_IQ_ERROR); |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1781 | xmlnode_set_attrib(result->node, "id", id); |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1782 | |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1783 | error = xmlnode_new_child(result->node, "error"); |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1784 | xmlnode_set_attrib(error, "type", "modify"); |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1785 | x = xmlnode_new_child(error, "bad-request"); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
1786 | xmlnode_set_namespace(x, NS_XMPP_STANZAS); |
|
27181
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1787 | |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1788 | jabber_iq_send(result); |
|
1a3c15400f3e
Avoid an assertion failure and add an error case.
Paul Aurich <darkrain42@pidgin.im>
parents:
27176
diff
changeset
|
1789 | return; |
|
27175
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1790 | } else { |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1791 | for ( ; item; item = xmlnode_get_next_twin(item)) { |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1792 | const char *jid = xmlnode_get_attrib(item, "jid"); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1793 | if (jid == NULL || *jid == '\0') |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1794 | continue; |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1795 | |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1796 | if (is_block) |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1797 | purple_privacy_deny_add(account, jid, TRUE); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1798 | else |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1799 | purple_privacy_deny_remove(account, jid, TRUE); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1800 | } |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1801 | } |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1802 | |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1803 | result = jabber_iq_new(js, JABBER_IQ_RESULT); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1804 | xmlnode_set_attrib(result->node, "id", id); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1805 | jabber_iq_send(result); |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1806 | } |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1807 | |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1808 | static void jabber_blocklist_parse(JabberStream *js, const char *from, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1809 | JabberIqType type, const char *id, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
1810 | xmlnode *packet, gpointer data) |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1811 | { |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1812 | xmlnode *blocklist, *item; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1813 | PurpleAccount *account; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1814 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1815 | blocklist = xmlnode_get_child_with_namespace(packet, |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
1816 | "blocklist", NS_SIMPLE_BLOCKING); |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1817 | account = purple_connection_get_account(js->gc); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1818 | |
|
27176
0af9ce7c0694
The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents:
27175
diff
changeset
|
1819 | if (type == JABBER_IQ_ERROR || blocklist == NULL) |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1820 | return; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1821 | |
|
27175
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1822 | /* This is the only privacy method supported by XEP-0191 */ |
|
27176
0af9ce7c0694
The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents:
27175
diff
changeset
|
1823 | if (account->perm_deny != PURPLE_PRIVACY_DENY_USERS) |
|
27175
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1824 | account->perm_deny = PURPLE_PRIVACY_DENY_USERS; |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1825 | |
|
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1826 | /* |
|
27176
0af9ce7c0694
The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents:
27175
diff
changeset
|
1827 | * TODO: When account->deny is something more than a hash table, this can |
|
0af9ce7c0694
The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents:
27175
diff
changeset
|
1828 | * be re-written to find the set intersection and difference. |
|
27175
e027ae421bf3
Support pushed notifications about XEP-0191 Blocks/Unblocks. Closes #8045.
Paul Aurich <darkrain42@pidgin.im>
parents:
27156
diff
changeset
|
1829 | */ |
|
27176
0af9ce7c0694
The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents:
27175
diff
changeset
|
1830 | while (account->deny) |
|
0af9ce7c0694
The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents:
27175
diff
changeset
|
1831 | purple_privacy_deny_remove(account, account->deny->data, TRUE); |
|
0af9ce7c0694
The server list is definitive for who is blocked.
Paul Aurich <darkrain42@pidgin.im>
parents:
27175
diff
changeset
|
1832 | |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1833 | item = xmlnode_get_child(blocklist, "item"); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1834 | while (item != NULL) { |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1835 | const char *jid = xmlnode_get_attrib(item, "jid"); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1836 | purple_privacy_deny_add(account, jid, TRUE); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1837 | item = xmlnode_get_next_twin(item); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1838 | } |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1839 | } |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1840 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1841 | void jabber_request_block_list(JabberStream *js) |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1842 | { |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1843 | JabberIq *iq; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1844 | xmlnode *blocklist; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1845 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1846 | iq = jabber_iq_new(js, JABBER_IQ_GET); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1847 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1848 | blocklist = xmlnode_new_child(iq->node, "blocklist"); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
1849 | xmlnode_set_namespace(blocklist, NS_SIMPLE_BLOCKING); |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1850 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1851 | jabber_iq_set_callback(iq, jabber_blocklist_parse, NULL); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1852 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1853 | jabber_iq_send(iq); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1854 | } |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1855 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1856 | void jabber_add_deny(PurpleConnection *gc, const char *who) |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1857 | { |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1858 | JabberStream *js; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1859 | JabberIq *iq; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1860 | xmlnode *block, *item; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1861 | |
|
29094
1d72af8f11dd
jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents:
29085
diff
changeset
|
1862 | g_return_if_fail(who != NULL && *who != '\0'); |
|
1d72af8f11dd
jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents:
29085
diff
changeset
|
1863 | |
|
1d72af8f11dd
jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents:
29085
diff
changeset
|
1864 | js = purple_connection_get_protocol_data(gc); |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1865 | if (js == NULL) |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1866 | return; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1867 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1868 | if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1869 | { |
|
29094
1d72af8f11dd
jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents:
29085
diff
changeset
|
1870 | jabber_google_roster_add_deny(js, who); |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1871 | return; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1872 | } |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1873 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1874 | if (!(js->server_caps & JABBER_CAP_BLOCKING)) |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1875 | { |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1876 | purple_notify_error(NULL, _("Server doesn't support blocking"), |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1877 | _("Server doesn't support blocking"), NULL); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1878 | return; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1879 | } |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1880 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1881 | iq = jabber_iq_new(js, JABBER_IQ_SET); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1882 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1883 | block = xmlnode_new_child(iq->node, "block"); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
1884 | xmlnode_set_namespace(block, NS_SIMPLE_BLOCKING); |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1885 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1886 | item = xmlnode_new_child(block, "item"); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1887 | xmlnode_set_attrib(item, "jid", who); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1888 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1889 | jabber_iq_send(iq); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1890 | } |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1891 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1892 | void jabber_rem_deny(PurpleConnection *gc, const char *who) |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1893 | { |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1894 | JabberStream *js; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1895 | JabberIq *iq; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1896 | xmlnode *unblock, *item; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1897 | |
|
29094
1d72af8f11dd
jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents:
29085
diff
changeset
|
1898 | g_return_if_fail(who != NULL && *who != '\0'); |
|
1d72af8f11dd
jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents:
29085
diff
changeset
|
1899 | |
|
1d72af8f11dd
jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents:
29085
diff
changeset
|
1900 | js = purple_connection_get_protocol_data(gc); |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1901 | if (js == NULL) |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1902 | return; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1903 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1904 | if (js->server_caps & JABBER_CAP_GOOGLE_ROSTER) |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1905 | { |
|
29094
1d72af8f11dd
jabber: Clean up this code a little.
Paul Aurich <darkrain42@pidgin.im>
parents:
29085
diff
changeset
|
1906 | jabber_google_roster_rem_deny(js, who); |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1907 | return; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1908 | } |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1909 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1910 | if (!(js->server_caps & JABBER_CAP_BLOCKING)) |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1911 | return; |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1912 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1913 | iq = jabber_iq_new(js, JABBER_IQ_SET); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1914 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1915 | unblock = xmlnode_new_child(iq->node, "unblock"); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
1916 | xmlnode_set_namespace(unblock, NS_SIMPLE_BLOCKING); |
|
25290
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1917 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1918 | item = xmlnode_new_child(unblock, "item"); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1919 | xmlnode_set_attrib(item, "jid", who); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1920 | |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1921 | jabber_iq_send(iq); |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1922 | } |
|
033942580f51
Commit patch #7670: Implement xep-0191 (simple blocking) for jabber protocols
Mark Doliner <markdoliner@pidgin.im>
parents:
25242
diff
changeset
|
1923 | |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
1924 | void jabber_add_feature(const char *namespace, JabberFeatureEnabled cb) { |
|
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
|
1925 | 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
|
1926 | |
|
854d2a4c99b6
There shouldn't be assert()s in pretty much any libpurple code.
Daniel Atallah <datallah@pidgin.im>
parents:
19993
diff
changeset
|
1927 | 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
|
1928 | |
|
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
|
1929 | 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
|
1930 | 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
|
1931 | feat->is_enabled = cb; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1932 | |
|
17779
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17775
diff
changeset
|
1933 | /* try to remove just in case it already exists in the list */ |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
1934 | jabber_remove_feature(namespace); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
1935 | |
|
17779
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17775
diff
changeset
|
1936 | 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
|
1937 | } |
|
e67998927a3c
Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents:
17769
diff
changeset
|
1938 | |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
1939 | void jabber_remove_feature(const char *namespace) { |
|
17779
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17775
diff
changeset
|
1940 | GList *feature; |
|
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17775
diff
changeset
|
1941 | 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
|
1942 | JabberFeature *feat = (JabberFeature*)feature->data; |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
1943 | if(!strcmp(feat->namespace, namespace)) { |
|
17779
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17775
diff
changeset
|
1944 | g_free(feat->namespace); |
|
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17775
diff
changeset
|
1945 | g_free(feature->data); |
| 21623 | 1946 | 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
|
1947 | break; |
|
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17775
diff
changeset
|
1948 | } |
|
773326802e26
Fixed whitespace to match the coding convention used in libpurple
Andreas Monitzer <am@adiumx.com>
parents:
17775
diff
changeset
|
1949 | } |
|
17770
e67998927a3c
Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents:
17769
diff
changeset
|
1950 | } |
|
e67998927a3c
Added the ability to define extensions to caps
Andreas Monitzer <am@adiumx.com>
parents:
17769
diff
changeset
|
1951 | |
|
24737
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
1952 | static void jabber_features_destroy(void) |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
1953 | { |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
1954 | while (jabber_features) { |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
1955 | JabberFeature *feature = jabber_features->data; |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
1956 | g_free(feature->namespace); |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
1957 | g_free(feature); |
|
28760
a7129c0e7108
jabber: Oops. --leaks.
Paul Aurich <darkrain42@pidgin.im>
parents:
28734
diff
changeset
|
1958 | jabber_features = g_list_delete_link(jabber_features, jabber_features); |
|
24737
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
1959 | } |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
1960 | } |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
1961 | |
|
30512
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1962 | gint |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1963 | jabber_identity_compare(gconstpointer a, gconstpointer b) |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1964 | { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1965 | const JabberIdentity *ac; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1966 | const JabberIdentity *bc; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1967 | gint cat_cmp; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1968 | gint typ_cmp; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1969 | |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1970 | ac = a; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1971 | bc = b; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1972 | |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1973 | if ((cat_cmp = strcmp(ac->category, bc->category)) == 0) { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1974 | if ((typ_cmp = strcmp(ac->type, bc->type)) == 0) { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1975 | if (!ac->lang && !bc->lang) { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1976 | return 0; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1977 | } else if (ac->lang && !bc->lang) { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1978 | return 1; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1979 | } else if (!ac->lang && bc->lang) { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1980 | return -1; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1981 | } else { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1982 | return strcmp(ac->lang, bc->lang); |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1983 | } |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1984 | } else { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1985 | return typ_cmp; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1986 | } |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1987 | } else { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1988 | return cat_cmp; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1989 | } |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1990 | } |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1991 | |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1992 | void jabber_add_identity(const gchar *category, const gchar *type, |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1993 | const gchar *lang, const gchar *name) |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1994 | { |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
1995 | GList *identity; |
|
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
1996 | JabberIdentity *ident; |
|
30512
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
1997 | |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
1998 | /* both required according to XEP-0030 */ |
|
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
1999 | g_return_if_fail(category != NULL); |
|
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
2000 | g_return_if_fail(type != NULL); |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
2001 | |
|
30512
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
2002 | /* Check if this identity is already there... */ |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
2003 | for (identity = jabber_identities; identity; identity = identity->next) { |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
2004 | JabberIdentity *id = identity->data; |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
2005 | if (g_str_equal(id->category, category) && |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
2006 | g_str_equal(id->type, type) && |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
2007 | purple_strequal(id->lang, lang)) |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
2008 | return; |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
2009 | } |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
2010 | |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
2011 | ident = g_new0(JabberIdentity, 1); |
|
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
2012 | ident->category = g_strdup(category); |
|
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
2013 | ident->type = g_strdup(type); |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
2014 | ident->lang = g_strdup(lang); |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
2015 | ident->name = g_strdup(name); |
|
30512
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
2016 | jabber_identities = g_list_insert_sorted(jabber_identities, ident, |
|
f0f51b3a3f30
jabber: Move another function out of caps.c...
Paul Aurich <darkrain42@pidgin.im>
parents:
30474
diff
changeset
|
2017 | jabber_identity_compare); |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
2018 | } |
|
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
2019 | |
|
24737
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2020 | static void jabber_identities_destroy(void) |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2021 | { |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2022 | while (jabber_identities) { |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2023 | JabberIdentity *id = jabber_identities->data; |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2024 | g_free(id->category); |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2025 | g_free(id->type); |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2026 | g_free(id->lang); |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2027 | g_free(id->name); |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2028 | g_free(id); |
|
28760
a7129c0e7108
jabber: Oops. --leaks.
Paul Aurich <darkrain42@pidgin.im>
parents:
28734
diff
changeset
|
2029 | jabber_identities = g_list_delete_link(jabber_identities, jabber_identities); |
|
24737
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2030 | } |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2031 | } |
|
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
2032 | |
|
26533
5c74696c34d1
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents:
26531
diff
changeset
|
2033 | gboolean jabber_stream_is_ssl(JabberStream *js) |
|
5c74696c34d1
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents:
26531
diff
changeset
|
2034 | { |
|
5c74696c34d1
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents:
26531
diff
changeset
|
2035 | return (js->bosh && jabber_bosh_connection_is_ssl(js->bosh)) || |
|
5c74696c34d1
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents:
26531
diff
changeset
|
2036 | (!js->bosh && js->gsc); |
|
5c74696c34d1
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents:
26531
diff
changeset
|
2037 | } |
|
5c74696c34d1
BOSH: For authentication purposes, HTTPS is equivalent to a secured JabberStream.
Paul Aurich <darkrain42@pidgin.im>
parents:
26531
diff
changeset
|
2038 | |
|
30056
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2039 | static gboolean |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2040 | inactivity_cb(gpointer data) |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2041 | { |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2042 | JabberStream *js = data; |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2043 | |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2044 | /* We want whatever is sent to set this. It's okay because |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2045 | * the eventloop unsets it via the return FALSE. |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2046 | */ |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2047 | js->inactivity_timer = 0; |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2048 | |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2049 | if (js->bosh) |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2050 | jabber_bosh_connection_send_keepalive(js->bosh); |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2051 | else |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2052 | jabber_send_raw(js, "\t", 1); |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2053 | |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2054 | return FALSE; |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2055 | } |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2056 | |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2057 | void jabber_stream_restart_inactivity_timer(JabberStream *js) |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2058 | { |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2059 | if (js->inactivity_timer != 0) { |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2060 | purple_timeout_remove(js->inactivity_timer); |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2061 | js->inactivity_timer = 0; |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2062 | } |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2063 | |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2064 | g_return_if_fail(js->max_inactivity > 0); |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2065 | |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2066 | js->inactivity_timer = |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2067 | purple_timeout_add_seconds(js->max_inactivity, |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2068 | inactivity_cb, js); |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2069 | } |
|
24dcb476e62b
jabber: Send whitespace keepalives every two minutes of (outgoing) silence.
Paul Aurich <darkrain42@pidgin.im>
parents:
30036
diff
changeset
|
2070 | |
|
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
|
2071 | const char *jabber_list_icon(PurpleAccount *a, PurpleBuddy *b) |
| 2086 | 2072 | { |
| 4687 | 2073 | return "jabber"; |
| 2074 | } | |
| 4916 | 2075 | |
|
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
|
2076 | const char* jabber_list_emblem(PurpleBuddy *b) |
| 4916 | 2077 | { |
| 7014 | 2078 | JabberStream *js; |
|
13486
4ea1a712aaa3
[gaim-migrate @ 15861]
Daniel Atallah <datallah@pidgin.im>
parents:
13385
diff
changeset
|
2079 | JabberBuddy *jb = NULL; |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2080 | PurpleConnection *gc = purple_account_get_connection(purple_buddy_get_account(b)); |
| 7014 | 2081 | |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2082 | if(!gc) |
|
15558
6fb7a0ad8a0b
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15524
diff
changeset
|
2083 | return NULL; |
|
6fb7a0ad8a0b
clean up some compile warnings
Nathan Walp <nwalp@pidgin.im>
parents:
15524
diff
changeset
|
2084 | |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2085 | js = gc->proto_data; |
|
13486
4ea1a712aaa3
[gaim-migrate @ 15861]
Daniel Atallah <datallah@pidgin.im>
parents:
13385
diff
changeset
|
2086 | if(js) |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2087 | jb = jabber_buddy_find(js, purple_buddy_get_name(b), FALSE); |
| 5135 | 2088 | |
| 15884 | 2089 | if(!PURPLE_BUDDY_IS_ONLINE(b)) { |
| 7014 | 2090 | if(jb && (jb->subscription & JABBER_SUB_PENDING || |
| 2091 | !(jb->subscription & JABBER_SUB_TO))) | |
| 15524 | 2092 | return "not-authorized"; |
| 2086 | 2093 | } |
|
27292
1e8a952548f9
Whitespace + a change cluttering up the diff with im.pidgin.pidgin
Paul Aurich <darkrain42@pidgin.im>
parents:
27291
diff
changeset
|
2094 | |
|
25577
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2095 | if (jb) { |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2096 | JabberBuddyResource *jbr = jabber_buddy_find_resource(jb, NULL); |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2097 | if (jbr) { |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2098 | const gchar *client_type = |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2099 | jabber_resource_get_identity_category_type(jbr, "client"); |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2100 | |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2101 | if (client_type) { |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2102 | if (strcmp(client_type, "phone") == 0) { |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2103 | return "mobile"; |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2104 | } else if (strcmp(client_type, "web") == 0) { |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2105 | return "external"; |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2106 | } else if (strcmp(client_type, "handheld") == 0) { |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2107 | return "hiptop"; |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2108 | } else if (strcmp(client_type, "bot") == 0) { |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2109 | return "bot"; |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2110 | } |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2111 | /* the default value "pc" falls through and has no emblem */ |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2112 | } |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2113 | } |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2114 | } |
|
ca0b40451bbc
Set a value "type" in the ui_info hash table
Marcus Lundblad <malu@pidgin.im>
parents:
25573
diff
changeset
|
2115 | |
| 15524 | 2116 | return NULL; |
| 4916 | 2117 | } |
| 2086 | 2118 | |
|
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
|
2119 | char *jabber_status_text(PurpleBuddy *b) |
|
2205
68c42ce8eba6
[gaim-migrate @ 2215]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2170
diff
changeset
|
2120 | { |
| 7014 | 2121 | 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
|
2122 | JabberBuddy *jb = NULL; |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2123 | PurpleAccount *account = purple_buddy_get_account(b); |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2124 | PurpleConnection *gc = purple_account_get_connection(account); |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2125 | |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2126 | if (gc && gc->proto_data) |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2127 | jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE); |
| 5234 | 2128 | |
| 15884 | 2129 | if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && (jb->subscription & JABBER_SUB_PENDING || !(jb->subscription & JABBER_SUB_TO))) { |
| 7014 | 2130 | ret = g_strdup(_("Not Authorized")); |
| 15884 | 2131 | } else if(jb && !PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) { |
| 7014 | 2132 | ret = g_strdup(jb->error_msg); |
| 2956 | 2133 | } else { |
|
26868
5c99daf94155
Retrieve status message to display in Buddy List from PurplePresence.
Paul Aurich <darkrain42@pidgin.im>
parents:
26860
diff
changeset
|
2134 | PurplePresence *presence = purple_buddy_get_presence(b); |
|
27775
b8569a76e02e
Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27697
diff
changeset
|
2135 | PurpleStatus *status = purple_presence_get_active_status(presence); |
|
27779
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2136 | const char *message; |
|
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2137 | |
|
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2138 | if((message = purple_status_get_attr_string(status, "message"))) { |
|
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2139 | ret = g_markup_escape_text(message, -1); |
|
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2140 | } else if (purple_presence_is_status_primitive_active(presence, PURPLE_STATUS_TUNE)) { |
|
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2141 | PurpleStatus *status = purple_presence_get_status(presence, "tune"); |
|
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2142 | const char *title = purple_status_get_attr_string(status, PURPLE_TUNE_TITLE); |
|
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2143 | const char *artist = purple_status_get_attr_string(status, PURPLE_TUNE_ARTIST); |
|
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2144 | const char *album = purple_status_get_attr_string(status, PURPLE_TUNE_ALBUM); |
|
ad70fa8a4ae2
merge of 'fd813a8f4960b8769f6f6915d9f62df8b3992280'
Elliott Sales de Andrade <qulogic@pidgin.im>
diff
changeset
|
2145 | ret = purple_util_format_song_info(title, artist, album, NULL); |
| 7014 | 2146 | } |
| 2086 | 2147 | } |
| 2148 | ||
| 7014 | 2149 | return ret; |
| 2956 | 2150 | } |
| 2151 | ||
|
25840
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2152 | static void |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
2153 | jabber_tooltip_add_resource_text(JabberBuddyResource *jbr, |
|
25840
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2154 | PurpleNotifyUserInfo *user_info, gboolean multiple_resources) |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2155 | { |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2156 | char *text = NULL; |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2157 | char *res = NULL; |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2158 | char *label, *value; |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2159 | const char *state; |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2160 | |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2161 | if(jbr->status) { |
|
27775
b8569a76e02e
Don't pre-escape jbr->status. Almost every place required it in unescaped
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
27697
diff
changeset
|
2162 | text = g_markup_escape_text(jbr->status, -1); |
|
25840
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2163 | } |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2164 | |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2165 | if(jbr->name) |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2166 | res = g_strdup_printf(" (%s)", jbr->name); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2167 | |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2168 | state = jabber_buddy_state_get_name(jbr->state); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2169 | if (text != NULL && !purple_utf8_strcasecmp(state, text)) { |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2170 | g_free(text); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2171 | text = NULL; |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2172 | } |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2173 | |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2174 | label = g_strdup_printf("%s%s", _("Status"), (res ? res : "")); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2175 | value = g_strdup_printf("%s%s%s", state, (text ? ": " : ""), (text ? text : "")); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2176 | |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2177 | purple_notify_user_info_add_pair(user_info, label, value); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2178 | g_free(label); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2179 | g_free(value); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2180 | g_free(text); |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
2181 | |
|
25840
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2182 | /* if the resource is idle, show that */ |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2183 | /* only show it if there is more than one resource available for |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2184 | the buddy, since the "general" idleness will be shown anyway, |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2185 | this way we can see see the idleness of lower-priority resources */ |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2186 | if (jbr->idle && multiple_resources) { |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
2187 | gchar *idle_str = |
|
25840
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2188 | purple_str_seconds_to_string(time(NULL) - jbr->idle); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2189 | label = g_strdup_printf("%s%s", _("Idle"), (res ? res : "")); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2190 | purple_notify_user_info_add_pair(user_info, label, idle_str); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2191 | g_free(idle_str); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2192 | g_free(label); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2193 | } |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2194 | g_free(res); |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2195 | } |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2196 | |
|
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
|
2197 | void jabber_tooltip_text(PurpleBuddy *b, PurpleNotifyUserInfo *user_info, gboolean full) |
| 4744 | 2198 | { |
| 11609 | 2199 | JabberBuddy *jb; |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2200 | PurpleAccount *account; |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2201 | PurpleConnection *gc; |
| 11609 | 2202 | |
|
12970
c2f3b4dcf711
[gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents:
12948
diff
changeset
|
2203 | g_return_if_fail(b != NULL); |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2204 | |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2205 | account = purple_buddy_get_account(b); |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2206 | g_return_if_fail(account != NULL); |
| 11609 | 2207 | |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2208 | gc = purple_account_get_connection(account); |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2209 | g_return_if_fail(gc != NULL); |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2210 | g_return_if_fail(gc->proto_data != NULL); |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2211 | |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2212 | jb = jabber_buddy_find(gc->proto_data, purple_buddy_get_name(b), FALSE); |
| 7014 | 2213 | |
| 8194 | 2214 | if(jb) { |
| 11609 | 2215 | JabberBuddyResource *jbr = NULL; |
|
21195
fd63ef5027d7
Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents:
21193
diff
changeset
|
2216 | PurplePresence *presence = purple_buddy_get_presence(b); |
| 8194 | 2217 | const char *sub; |
| 11609 | 2218 | GList *l; |
|
19920
7b0d20da73d0
Don't put "Mood: \(null\) \(null\)" on XMPP buddies
Sean Egan <seanegan@pidgin.im>
parents:
19897
diff
changeset
|
2219 | const char *mood; |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
2220 | gboolean multiple_resources = |
|
25836
ed37c7a05f8a
Only show idle time for idle resources in tooltip text when there is more than
Marcus Lundblad <malu@pidgin.im>
parents:
25532
diff
changeset
|
2221 | jb->resources && g_list_next(jb->resources); |
|
25840
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2222 | JabberBuddyResource *top_jbr = jabber_buddy_find_resource(jb, NULL); |
|
25842
8da3a69dfa55
Remove some unused variables
Marcus Lundblad <malu@pidgin.im>
parents:
25841
diff
changeset
|
2223 | |
|
25840
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2224 | /* resource-specific info for the top resource */ |
|
25843
67bc9c8a4b8d
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <malu@pidgin.im>
parents:
25842
diff
changeset
|
2225 | if (top_jbr) { |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
2226 | jabber_tooltip_add_resource_text(top_jbr, user_info, |
|
25843
67bc9c8a4b8d
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <malu@pidgin.im>
parents:
25842
diff
changeset
|
2227 | multiple_resources); |
|
67bc9c8a4b8d
Avoid crashing when showing the tooltip of an offline buddy, oops :)
Marcus Lundblad <malu@pidgin.im>
parents:
25842
diff
changeset
|
2228 | } |
|
25842
8da3a69dfa55
Remove some unused variables
Marcus Lundblad <malu@pidgin.im>
parents:
25841
diff
changeset
|
2229 | |
| 11609 | 2230 | for(l=jb->resources; l; l = l->next) { |
| 2231 | jbr = l->data; | |
|
25840
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2232 | /* the remaining resources */ |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2233 | if (jbr != top_jbr) { |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2234 | jabber_tooltip_add_resource_text(jbr, user_info, |
|
f703af7527a6
Always show the top resource first in the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25838
diff
changeset
|
2235 | multiple_resources); |
|
12944
da8f60d43d88
[gaim-migrate @ 15297]
Richard Laager <rlaager@pidgin.im>
parents:
12943
diff
changeset
|
2236 | } |
| 11609 | 2237 | } |
| 2238 | ||
|
12948
0867a553ed26
[gaim-migrate @ 15301]
Richard Laager <rlaager@pidgin.im>
parents:
12944
diff
changeset
|
2239 | 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
|
2240 | 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
|
2241 | |
|
24912
9ae8349f0353
Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@pidgin.im>
parents:
24907
diff
changeset
|
2242 | status = purple_presence_get_status(presence, "mood"); |
|
9ae8349f0353
Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@pidgin.im>
parents:
24907
diff
changeset
|
2243 | mood = purple_status_get_attr_string(status, PURPLE_MOOD_NAME); |
|
24905
dbe73df3dfa0
Check that mood is not the empty string, just to be safe.
Richard Laager <rlaager@pidgin.im>
parents:
24903
diff
changeset
|
2244 | if(mood && *mood) { |
|
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
|
2245 | const char *moodtext; |
|
29412
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2246 | /* find the mood */ |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2247 | PurpleMood *moods = jabber_get_moods(account); |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2248 | const char *description = NULL; |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2249 | |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2250 | for (; moods->mood ; moods++) { |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2251 | if (purple_strequal(moods->mood, mood)) { |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2252 | description = moods->description; |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2253 | break; |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2254 | } |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2255 | } |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2256 | |
|
24912
9ae8349f0353
Move the mood UI for ICQ into Pidgin. It still uses the new request API
Richard Laager <rlaager@pidgin.im>
parents:
24907
diff
changeset
|
2257 | moodtext = purple_status_get_attr_string(status, PURPLE_MOOD_COMMENT); |
|
24903
638ef56eb3c5
Do not show "Mood: mood ()" when there is no text.
Richard Laager <rlaager@pidgin.im>
parents:
24430
diff
changeset
|
2258 | if(moodtext && *moodtext) { |
|
29412
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2259 | char *moodplustext = |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2260 | g_strdup_printf("%s (%s)", description ? _(description) : mood, moodtext); |
|
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
|
2261 | |
|
17780
749862fd4a87
Fixed a few small mistakes I discovered while testing user mood in Adium.
Andreas Monitzer <am@adiumx.com>
parents:
17779
diff
changeset
|
2262 | 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
|
2263 | 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
|
2264 | } else |
|
29412
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2265 | purple_notify_user_info_add_pair(user_info, _("Mood"), |
|
c27d9bb60878
Show the translated mood message (again), if it matches one of the moods we
Marcus Lundblad <malu@pidgin.im>
parents:
29407
diff
changeset
|
2266 | description ? _(description) : mood); |
|
21195
fd63ef5027d7
Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents:
21193
diff
changeset
|
2267 | } |
|
22133
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22111
diff
changeset
|
2268 | 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
|
2269 | PurpleStatus *tune = purple_presence_get_status(presence, "tune"); |
|
fd63ef5027d7
Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents:
21193
diff
changeset
|
2270 | 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
|
2271 | 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
|
2272 | 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
|
2273 | 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
|
2274 | if (playing) { |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22111
diff
changeset
|
2275 | 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
|
2276 | g_free(playing); |
|
6eb22afb9701
Utility functions to set and format song information. Closes #4398.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22111
diff
changeset
|
2277 | } |
|
21195
fd63ef5027d7
Music support for Google Talk
Sean Egan <seanegan@pidgin.im>
parents:
21193
diff
changeset
|
2278 | } |
|
25838
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2279 | |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2280 | if(jb->subscription & JABBER_SUB_FROM) { |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2281 | if(jb->subscription & JABBER_SUB_TO) |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2282 | sub = _("Both"); |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2283 | else if(jb->subscription & JABBER_SUB_PENDING) |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2284 | sub = _("From (To pending)"); |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2285 | else |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2286 | sub = _("From"); |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2287 | } else { |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2288 | if(jb->subscription & JABBER_SUB_TO) |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2289 | sub = _("To"); |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2290 | else if(jb->subscription & JABBER_SUB_PENDING) |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2291 | sub = _("None (To pending)"); |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2292 | else |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2293 | sub = _("None"); |
| 8194 | 2294 | } |
| 2295 | ||
|
25838
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2296 | purple_notify_user_info_add_pair(user_info, _("Subscription"), sub); |
|
db906dc27472
Show statuses per resource before other info the jabber prpl adds to the tooltip
Marcus Lundblad <malu@pidgin.im>
parents:
25836
diff
changeset
|
2297 | |
| 11609 | 2298 | } |
| 2299 | ||
| 15884 | 2300 | if(!PURPLE_BUDDY_IS_ONLINE(b) && jb->error_msg) { |
| 2301 | purple_notify_user_info_add_pair(user_info, _("Error"), jb->error_msg); | |
| 8194 | 2302 | } |
| 4745 | 2303 | } |
| 4732 | 2304 | } |
| 2305 | ||
|
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
|
2306 | GList *jabber_status_types(PurpleAccount *account) |
| 7014 | 2307 | { |
| 15884 | 2308 | PurpleStatusType *type; |
| 9954 | 2309 | GList *types = NULL; |
| 15884 | 2310 | PurpleValue *priority_value; |
|
24396
7f2eddefcbf3
Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents:
24254
diff
changeset
|
2311 | PurpleValue *buzz_enabled; |
| 9954 | 2312 | |
| 15884 | 2313 | priority_value = purple_value_new(PURPLE_TYPE_INT); |
| 2314 | purple_value_set_int(priority_value, 1); | |
|
24396
7f2eddefcbf3
Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents:
24254
diff
changeset
|
2315 | buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
|
7f2eddefcbf3
Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents:
24254
diff
changeset
|
2316 | purple_value_set_boolean(buzz_enabled, TRUE); |
| 15884 | 2317 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2318 | jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_ONLINE), |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2319 | NULL, TRUE, TRUE, FALSE, |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2320 | "priority", _("Priority"), priority_value, |
| 15884 | 2321 | "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
|
2322 | "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
|
2323 | "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
|
2324 | "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
|
24396
7f2eddefcbf3
Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents:
24254
diff
changeset
|
2325 | "buzz", _("Allow Buzz"), buzz_enabled, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2326 | NULL); |
|
24907
13118548c74c
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents:
24905
diff
changeset
|
2327 | types = g_list_prepend(types, type); |
| 9980 | 2328 | |
|
29407
e4140d21900d
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents:
29304
diff
changeset
|
2329 | |
|
e4140d21900d
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents:
29304
diff
changeset
|
2330 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_MOOD, |
|
e4140d21900d
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents:
29304
diff
changeset
|
2331 | "mood", NULL, TRUE, TRUE, TRUE, |
|
e4140d21900d
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents:
29304
diff
changeset
|
2332 | PURPLE_MOOD_NAME, _("Mood Name"), purple_value_new(PURPLE_TYPE_STRING), |
|
e4140d21900d
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents:
29304
diff
changeset
|
2333 | PURPLE_MOOD_COMMENT, _("Mood Comment"), purple_value_new(PURPLE_TYPE_STRING), |
|
e4140d21900d
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents:
29304
diff
changeset
|
2334 | NULL); |
|
e4140d21900d
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents:
29304
diff
changeset
|
2335 | types = g_list_prepend(types, type); |
|
e4140d21900d
Implemented the get_moods prpl function for XMPP. Enables the generic mood
Marcus Lundblad <malu@pidgin.im>
parents:
29304
diff
changeset
|
2336 | |
| 15884 | 2337 | priority_value = purple_value_new(PURPLE_TYPE_INT); |
| 2338 | purple_value_set_int(priority_value, 1); | |
|
25956
71e85c4df8ed
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents:
25954
diff
changeset
|
2339 | buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
|
71e85c4df8ed
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents:
25954
diff
changeset
|
2340 | purple_value_set_boolean(buzz_enabled, TRUE); |
| 15884 | 2341 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2342 | jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_CHAT), |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2343 | _("Chatty"), TRUE, TRUE, FALSE, |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2344 | "priority", _("Priority"), priority_value, |
| 15884 | 2345 | "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
|
2346 | "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
|
2347 | "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
|
2348 | "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
|
24396
7f2eddefcbf3
Updated support for XEP-0224.
Marcus Lundblad <malu@pidgin.im>
parents:
24254
diff
changeset
|
2349 | "buzz", _("Allow Buzz"), buzz_enabled, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2350 | NULL); |
|
24907
13118548c74c
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents:
24905
diff
changeset
|
2351 | types = g_list_prepend(types, type); |
| 2086 | 2352 | |
| 15884 | 2353 | priority_value = purple_value_new(PURPLE_TYPE_INT); |
| 2354 | purple_value_set_int(priority_value, 0); | |
|
25956
71e85c4df8ed
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents:
25954
diff
changeset
|
2355 | buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
|
71e85c4df8ed
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents:
25954
diff
changeset
|
2356 | purple_value_set_boolean(buzz_enabled, TRUE); |
| 15884 | 2357 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2358 | jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_AWAY), |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2359 | NULL, TRUE, TRUE, FALSE, |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2360 | "priority", _("Priority"), priority_value, |
| 15884 | 2361 | "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
|
2362 | "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
|
2363 | "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
|
2364 | "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
2365 | "buzz", _("Allow Buzz"), buzz_enabled, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2366 | NULL); |
|
24907
13118548c74c
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents:
24905
diff
changeset
|
2367 | types = g_list_prepend(types, type); |
| 9954 | 2368 | |
| 15884 | 2369 | priority_value = purple_value_new(PURPLE_TYPE_INT); |
| 2370 | purple_value_set_int(priority_value, 0); | |
|
25956
71e85c4df8ed
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents:
25954
diff
changeset
|
2371 | buzz_enabled = purple_value_new(PURPLE_TYPE_BOOLEAN); |
|
71e85c4df8ed
Patch from Darkrain42 to avoid a double-free on status values
Marcus Lundblad <malu@pidgin.im>
parents:
25954
diff
changeset
|
2372 | purple_value_set_boolean(buzz_enabled, TRUE); |
| 15884 | 2373 | 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
|
2374 | jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_XA), |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2375 | NULL, TRUE, TRUE, FALSE, |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2376 | "priority", _("Priority"), priority_value, |
| 15884 | 2377 | "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
|
2378 | "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
|
2379 | "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
|
2380 | "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
2381 | "buzz", _("Allow Buzz"), buzz_enabled, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2382 | NULL); |
|
24907
13118548c74c
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents:
24905
diff
changeset
|
2383 | types = g_list_prepend(types, type); |
| 9954 | 2384 | |
| 15884 | 2385 | priority_value = purple_value_new(PURPLE_TYPE_INT); |
| 2386 | purple_value_set_int(priority_value, 0); | |
| 2387 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_UNAVAILABLE, | |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2388 | jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_DND), |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2389 | _("Do Not Disturb"), TRUE, TRUE, FALSE, |
|
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2390 | "priority", _("Priority"), priority_value, |
| 15884 | 2391 | "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
|
2392 | "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
|
2393 | "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
|
2394 | "nick", _("Nickname"), purple_value_new(PURPLE_TYPE_STRING), |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12554
diff
changeset
|
2395 | NULL); |
|
24907
13118548c74c
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents:
24905
diff
changeset
|
2396 | types = g_list_prepend(types, type); |
| 9954 | 2397 | |
| 2398 | /* | |
| 8166 | 2399 | if(js->protocol_version == JABBER_PROTO_0_9) |
|
24907
13118548c74c
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents:
24905
diff
changeset
|
2400 | "Invisible" |
|
10009
8a4fcc043f47
[gaim-migrate @ 10926]
Mark Doliner <markdoliner@pidgin.im>
parents:
9980
diff
changeset
|
2401 | */ |
| 2086 | 2402 | |
| 15884 | 2403 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_OFFLINE, |
|
12658
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12646
diff
changeset
|
2404 | jabber_buddy_state_get_status_id(JABBER_BUDDY_STATE_UNAVAILABLE), |
|
25552
ffd94785b2ad
For some reason, all these statuses were set to saveable=FALSE. With the
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
25328
diff
changeset
|
2405 | NULL, TRUE, TRUE, FALSE, |
| 15884 | 2406 | "message", _("Message"), purple_value_new(PURPLE_TYPE_STRING), |
|
12658
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12646
diff
changeset
|
2407 | NULL); |
|
24907
13118548c74c
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents:
24905
diff
changeset
|
2408 | types = g_list_prepend(types, type); |
|
12658
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12646
diff
changeset
|
2409 | |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20332
diff
changeset
|
2410 | 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
|
2411 | "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
|
2412 | 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
|
2413 | 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
|
2414 | 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
|
2415 | 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
|
2416 | 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
|
2417 | 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
|
2418 | 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
|
2419 | 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
|
2420 | 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
|
2421 | NULL); |
|
24907
13118548c74c
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents:
24905
diff
changeset
|
2422 | types = g_list_prepend(types, type); |
|
21193
e918a1846d03
Use an independant status type for 'current media' stuff, instead of using
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20332
diff
changeset
|
2423 | |
|
24907
13118548c74c
Add a PURPLE_STATUS_MOOD primitive and change ICQ to use it.
Richard Laager <rlaager@pidgin.im>
parents:
24905
diff
changeset
|
2424 | return g_list_reverse(types); |
| 2086 | 2425 | } |
| 2426 | ||
| 7395 | 2427 | static void |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
2428 | jabber_password_change_result_cb(JabberStream *js, const char *from, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
2429 | JabberIqType type, const char *id, |
|
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
2430 | xmlnode *packet, gpointer data) |
| 7124 | 2431 | { |
|
26687
1e799151fabe
Convert all the XMPP IQ callbacks to a typedef similar to the IQ Handlers.
Paul Aurich <darkrain42@pidgin.im>
parents:
26686
diff
changeset
|
2432 | if (type == JABBER_IQ_RESULT) { |
| 15884 | 2433 | purple_notify_info(js->gc, _("Password Changed"), _("Password Changed"), |
| 7124 | 2434 | _("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
|
2435 | |
|
91280f050201
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21076
diff
changeset
|
2436 | purple_account_set_password(js->gc->account, (char *)data); |
| 7124 | 2437 | } else { |
|
21150
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
2438 | char *msg = jabber_parse_error(js, packet, NULL); |
| 7124 | 2439 | |
| 15884 | 2440 | purple_notify_error(js->gc, _("Error changing password"), |
| 8401 | 2441 | _("Error changing password"), msg); |
| 2442 | g_free(msg); | |
| 7124 | 2443 | } |
|
21129
91280f050201
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21076
diff
changeset
|
2444 | |
|
91280f050201
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21076
diff
changeset
|
2445 | g_free(data); |
| 7124 | 2446 | } |
| 2447 | ||
| 2448 | static void jabber_password_change_cb(JabberStream *js, | |
| 15884 | 2449 | PurpleRequestFields *fields) |
| 7124 | 2450 | { |
| 2451 | const char *p1, *p2; | |
| 2452 | JabberIq *iq; | |
| 2453 | xmlnode *query, *y; | |
| 2454 | ||
| 15884 | 2455 | p1 = purple_request_fields_get_string(fields, "password1"); |
| 2456 | p2 = purple_request_fields_get_string(fields, "password2"); | |
| 7124 | 2457 | |
| 2458 | if(strcmp(p1, p2)) { | |
| 15884 | 2459 | purple_notify_error(js->gc, NULL, _("New passwords do not match."), NULL); |
| 7124 | 2460 | return; |
| 2461 | } | |
| 2462 | ||
| 2463 | iq = jabber_iq_new_query(js, JABBER_IQ_SET, "jabber:iq:register"); | |
| 2464 | ||
| 2465 | xmlnode_set_attrib(iq->node, "to", js->user->domain); | |
| 2466 | ||
| 2467 | query = xmlnode_get_child(iq->node, "query"); | |
| 2468 | ||
| 2469 | y = xmlnode_new_child(query, "username"); | |
| 2470 | xmlnode_insert_data(y, js->user->node, -1); | |
| 2471 | y = xmlnode_new_child(query, "password"); | |
| 2472 | xmlnode_insert_data(y, p1, -1); | |
| 2473 | ||
|
21129
91280f050201
This patch prevents changing the saved account password for XMPP accounts
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
21076
diff
changeset
|
2474 | jabber_iq_set_callback(iq, jabber_password_change_result_cb, g_strdup(p1)); |
| 7124 | 2475 | |
| 2476 | jabber_iq_send(iq); | |
| 2477 | } | |
| 2478 | ||
| 15884 | 2479 | static void jabber_password_change(PurplePluginAction *action) |
| 7124 | 2480 | { |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8993
diff
changeset
|
2481 | |
| 15884 | 2482 | PurpleConnection *gc = (PurpleConnection *) action->context; |
| 7124 | 2483 | JabberStream *js = gc->proto_data; |
| 15884 | 2484 | PurpleRequestFields *fields; |
| 2485 | PurpleRequestFieldGroup *group; | |
| 2486 | PurpleRequestField *field; | |
| 7124 | 2487 | |
| 15884 | 2488 | fields = purple_request_fields_new(); |
| 2489 | group = purple_request_field_group_new(NULL); | |
| 2490 | purple_request_fields_add_group(fields, group); | |
| 7124 | 2491 | |
| 15884 | 2492 | field = purple_request_field_string_new("password1", _("Password"), |
| 7124 | 2493 | "", FALSE); |
| 15884 | 2494 | 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
|
2495 | purple_request_field_set_required(field, TRUE); |
| 15884 | 2496 | purple_request_field_group_add_field(group, field); |
| 7124 | 2497 | |
| 15884 | 2498 | field = purple_request_field_string_new("password2", _("Password (again)"), |
| 7124 | 2499 | "", FALSE); |
| 15884 | 2500 | 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
|
2501 | purple_request_field_set_required(field, TRUE); |
| 15884 | 2502 | purple_request_field_group_add_field(group, field); |
| 7124 | 2503 | |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
2504 | 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
|
2505 | _("Change XMPP Password"), _("Please enter your new password"), |
| 7124 | 2506 | 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
|
2507 | _("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
|
2508 | purple_connection_get_account(gc), NULL, NULL, |
|
21175
c6d76b49c206
disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents:
21174
diff
changeset
|
2509 | js); |
| 7124 | 2510 | } |
| 2511 | ||
|
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
|
2512 | GList *jabber_actions(PurplePlugin *plugin, gpointer context) |
| 2956 | 2513 | { |
|
17782
83af68644d0a
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents:
17780
diff
changeset
|
2514 | 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
|
2515 | JabberStream *js = gc->proto_data; |
| 2956 | 2516 | GList *m = NULL; |
| 15884 | 2517 | PurplePluginAction *act; |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4316
diff
changeset
|
2518 | |
| 15884 | 2519 | act = purple_plugin_action_new(_("Set User Info..."), |
| 12286 | 2520 | jabber_setup_set_info); |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8993
diff
changeset
|
2521 | m = g_list_append(m, act); |
|
4333
f4c095774bc2
[gaim-migrate @ 4597]
Mark Doliner <markdoliner@pidgin.im>
parents:
4316
diff
changeset
|
2522 | |
| 8296 | 2523 | /* if (js->protocol_options & CHANGE_PASSWORD) { */ |
| 15884 | 2524 | act = purple_plugin_action_new(_("Change Password..."), |
| 12286 | 2525 | jabber_password_change); |
|
9015
3c27e9074fa2
[gaim-migrate @ 9791]
Christopher O'Brien <siege@pidgin.im>
parents:
8993
diff
changeset
|
2526 | m = g_list_append(m, act); |
| 8296 | 2527 | /* } */ |
| 2956 | 2528 | |
| 15884 | 2529 | act = purple_plugin_action_new(_("Search for Users..."), |
| 12286 | 2530 | jabber_user_search_begin); |
| 11675 | 2531 | m = g_list_append(m, act); |
| 2532 | ||
|
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
|
2533 | 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
|
2534 | |
|
17782
83af68644d0a
Implemented a mood menu action (non-functional right now for some reason)
Andreas Monitzer <am@adiumx.com>
parents:
17780
diff
changeset
|
2535 | 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
|
2536 | jabber_pep_init_actions(&m); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
2537 | |
|
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
|
2538 | 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
|
2539 | jabber_adhoc_init_server_commands(js, &m); |
| 11675 | 2540 | |
| 2956 | 2541 | return m; |
| 2542 | } | |
| 2543 | ||
|
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
|
2544 | PurpleChat *jabber_find_blist_chat(PurpleAccount *account, const char *name) |
| 7999 | 2545 | { |
| 15884 | 2546 | PurpleBlistNode *gnode, *cnode; |
| 7999 | 2547 | JabberID *jid; |
| 2548 | ||
| 2549 | if(!(jid = jabber_id_new(name))) | |
| 2550 | return NULL; | |
| 2551 | ||
|
24945
6678a8c83797
Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24571
diff
changeset
|
2552 | for(gnode = purple_blist_get_root(); gnode; |
|
6678a8c83797
Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24571
diff
changeset
|
2553 | gnode = purple_blist_node_get_sibling_next(gnode)) { |
|
6678a8c83797
Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24571
diff
changeset
|
2554 | for(cnode = purple_blist_node_get_first_child(gnode); |
|
6678a8c83797
Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24571
diff
changeset
|
2555 | cnode; |
|
6678a8c83797
Some more struct hiding.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24571
diff
changeset
|
2556 | cnode = purple_blist_node_get_sibling_next(cnode)) { |
| 15884 | 2557 | PurpleChat *chat = (PurpleChat*)cnode; |
| 7999 | 2558 | const char *room, *server; |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2559 | GHashTable *components; |
| 15884 | 2560 | if(!PURPLE_BLIST_NODE_IS_CHAT(cnode)) |
| 7999 | 2561 | continue; |
| 2562 | ||
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2563 | if (purple_chat_get_account(chat) != account) |
| 8011 | 2564 | continue; |
| 7999 | 2565 | |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2566 | components = purple_chat_get_components(chat); |
|
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2567 | if(!(room = g_hash_table_lookup(components, "room"))) |
| 7999 | 2568 | continue; |
|
24398
4865c2ee6ea8
Start hiding blist.h internals in prpls.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
24254
diff
changeset
|
2569 | if(!(server = g_hash_table_lookup(components, "server"))) |
| 7999 | 2570 | continue; |
| 2571 | ||
| 8158 | 2572 | if(jid->node && jid->domain && |
| 2573 | !g_utf8_collate(room, jid->node) && !g_utf8_collate(server, jid->domain)) { | |
| 7999 | 2574 | jabber_id_free(jid); |
| 2575 | return chat; | |
| 2576 | } | |
| 2577 | } | |
| 2578 | } | |
| 2579 | jabber_id_free(jid); | |
| 2580 | return NULL; | |
| 2581 | } | |
| 2582 | ||
|
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
|
2583 | void jabber_convo_closed(PurpleConnection *gc, const char *who) |
| 8400 | 2584 | { |
| 2585 | JabberStream *js = gc->proto_data; | |
| 2586 | JabberID *jid; | |
| 2587 | JabberBuddy *jb; | |
| 2588 | JabberBuddyResource *jbr; | |
| 2589 | ||
| 2590 | if(!(jid = jabber_id_new(who))) | |
| 2591 | return; | |
| 2592 | ||
| 2593 | if((jb = jabber_buddy_find(js, who, TRUE)) && | |
| 2594 | (jbr = jabber_buddy_find_resource(jb, jid->resource))) { | |
| 2595 | if(jbr->thread_id) { | |
| 2596 | g_free(jbr->thread_id); | |
| 2597 | jbr->thread_id = NULL; | |
| 2598 | } | |
| 2599 | } | |
| 2600 | ||
| 2601 | jabber_id_free(jid); | |
| 2602 | } | |
| 2603 | ||
| 8401 | 2604 | |
|
21150
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
2605 | 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
|
2606 | xmlnode *packet, |
| 21279 | 2607 | PurpleConnectionError *reason) |
| 8401 | 2608 | { |
| 2609 | xmlnode *error; | |
| 2610 | const char *code = NULL, *text = NULL; | |
| 13808 | 2611 | const char *xmlns = xmlnode_get_namespace(packet); |
| 8401 | 2612 | char *cdata = NULL; |
| 2613 | ||
|
21150
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
2614 | #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
|
2615 | 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
|
2616 | |
| 8401 | 2617 | if((error = xmlnode_get_child(packet, "error"))) { |
| 2618 | cdata = xmlnode_get_data(error); | |
| 2619 | code = xmlnode_get_attrib(error, "code"); | |
| 2620 | ||
| 2621 | /* Stanza errors */ | |
| 2622 | if(xmlnode_get_child(error, "bad-request")) { | |
| 2623 | text = _("Bad Request"); | |
| 2624 | } else if(xmlnode_get_child(error, "conflict")) { | |
| 2625 | text = _("Conflict"); | |
| 2626 | } else if(xmlnode_get_child(error, "feature-not-implemented")) { | |
| 2627 | text = _("Feature Not Implemented"); | |
| 2628 | } else if(xmlnode_get_child(error, "forbidden")) { | |
| 2629 | text = _("Forbidden"); | |
| 2630 | } else if(xmlnode_get_child(error, "gone")) { | |
| 2631 | text = _("Gone"); | |
| 2632 | } else if(xmlnode_get_child(error, "internal-server-error")) { | |
| 2633 | text = _("Internal Server Error"); | |
| 2634 | } else if(xmlnode_get_child(error, "item-not-found")) { | |
| 2635 | text = _("Item Not Found"); | |
| 2636 | } 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
|
2637 | text = _("Malformed XMPP ID"); |
| 8401 | 2638 | } else if(xmlnode_get_child(error, "not-acceptable")) { |
| 2639 | text = _("Not Acceptable"); | |
| 2640 | } else if(xmlnode_get_child(error, "not-allowed")) { | |
| 2641 | text = _("Not Allowed"); | |
| 2642 | } else if(xmlnode_get_child(error, "not-authorized")) { | |
| 2643 | text = _("Not Authorized"); | |
| 2644 | } else if(xmlnode_get_child(error, "payment-required")) { | |
| 2645 | text = _("Payment Required"); | |
| 2646 | } else if(xmlnode_get_child(error, "recipient-unavailable")) { | |
| 2647 | text = _("Recipient Unavailable"); | |
| 2648 | } else if(xmlnode_get_child(error, "redirect")) { | |
| 2649 | /* XXX */ | |
| 2650 | } else if(xmlnode_get_child(error, "registration-required")) { | |
| 2651 | text = _("Registration Required"); | |
| 2652 | } else if(xmlnode_get_child(error, "remote-server-not-found")) { | |
| 2653 | text = _("Remote Server Not Found"); | |
| 2654 | } else if(xmlnode_get_child(error, "remote-server-timeout")) { | |
| 2655 | text = _("Remote Server Timeout"); | |
| 2656 | } else if(xmlnode_get_child(error, "resource-constraint")) { | |
| 2657 | text = _("Server Overloaded"); | |
| 2658 | } else if(xmlnode_get_child(error, "service-unavailable")) { | |
| 2659 | text = _("Service Unavailable"); | |
| 2660 | } else if(xmlnode_get_child(error, "subscription-required")) { | |
| 2661 | text = _("Subscription Required"); | |
| 2662 | } else if(xmlnode_get_child(error, "unexpected-request")) { | |
| 2663 | text = _("Unexpected Request"); | |
| 2664 | } else if(xmlnode_get_child(error, "undefined-condition")) { | |
| 2665 | text = _("Unknown Error"); | |
| 2666 | } | |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
2667 | } else if(xmlns && !strcmp(xmlns, 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
|
2668 | /* 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
|
2669 | SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR); |
| 8401 | 2670 | if(xmlnode_get_child(packet, "aborted")) { |
| 2671 | text = _("Authorization Aborted"); | |
| 13806 | 2672 | } else if(xmlnode_get_child(packet, "incorrect-encoding")) { |
| 8401 | 2673 | text = _("Incorrect encoding in authorization"); |
| 13806 | 2674 | } else if(xmlnode_get_child(packet, "invalid-authzid")) { |
| 8401 | 2675 | text = _("Invalid authzid"); |
| 13806 | 2676 | } else if(xmlnode_get_child(packet, "invalid-mechanism")) { |
| 8401 | 2677 | text = _("Invalid Authorization Mechanism"); |
| 13806 | 2678 | } 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
|
2679 | SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_IMPOSSIBLE); |
| 8401 | 2680 | text = _("Authorization mechanism too weak"); |
| 13806 | 2681 | } 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
|
2682 | 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
|
2683 | /* 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
|
2684 | 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
|
2685 | purple_account_set_password(js->gc->account, NULL); |
| 8401 | 2686 | text = _("Not Authorized"); |
| 13806 | 2687 | } else if(xmlnode_get_child(packet, "temporary-auth-failure")) { |
| 8401 | 2688 | text = _("Temporary Authentication Failure"); |
| 2689 | } else { | |
|
21284
69472e4a5458
Having read the XMPP SASL specification, these errors seem more accurate.
Will Thompson <resiak@pidgin.im>
parents:
21281
diff
changeset
|
2690 | SET_REASON(PURPLE_CONNECTION_ERROR_AUTHENTICATION_FAILED); |
| 8401 | 2691 | text = _("Authentication Failure"); |
| 2692 | } | |
|
15979
acfbd09bc217
Correctly handle the Jabber disconnection error for signing onto the
Mark Doliner <markdoliner@pidgin.im>
parents:
15977
diff
changeset
|
2693 | } 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
|
2694 | (!strcmp(packet->name, "error") && xmlns && |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
2695 | !strcmp(xmlns, NS_XMPP_STREAMS))) { |
|
21150
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
2696 | /* Most common reason as default: */ |
| 21279 | 2697 | SET_REASON(PURPLE_CONNECTION_ERROR_NETWORK_ERROR); |
| 8402 | 2698 | if(xmlnode_get_child(packet, "bad-format")) { |
| 2699 | text = _("Bad Format"); | |
| 2700 | } else if(xmlnode_get_child(packet, "bad-namespace-prefix")) { | |
| 2701 | text = _("Bad Namespace Prefix"); | |
| 2702 | } else if(xmlnode_get_child(packet, "conflict")) { | |
| 21279 | 2703 | SET_REASON(PURPLE_CONNECTION_ERROR_NAME_IN_USE); |
| 8402 | 2704 | text = _("Resource Conflict"); |
| 2705 | } else if(xmlnode_get_child(packet, "connection-timeout")) { | |
| 2706 | text = _("Connection Timeout"); | |
| 2707 | } else if(xmlnode_get_child(packet, "host-gone")) { | |
| 2708 | text = _("Host Gone"); | |
| 2709 | } else if(xmlnode_get_child(packet, "host-unknown")) { | |
| 2710 | text = _("Host Unknown"); | |
| 2711 | } else if(xmlnode_get_child(packet, "improper-addressing")) { | |
| 2712 | text = _("Improper Addressing"); | |
| 2713 | } else if(xmlnode_get_child(packet, "internal-server-error")) { | |
| 2714 | text = _("Internal Server Error"); | |
| 2715 | } else if(xmlnode_get_child(packet, "invalid-id")) { | |
| 2716 | text = _("Invalid ID"); | |
| 2717 | } else if(xmlnode_get_child(packet, "invalid-namespace")) { | |
| 2718 | text = _("Invalid Namespace"); | |
| 2719 | } else if(xmlnode_get_child(packet, "invalid-xml")) { | |
| 2720 | text = _("Invalid XML"); | |
| 2721 | } else if(xmlnode_get_child(packet, "nonmatching-hosts")) { | |
| 2722 | text = _("Non-matching Hosts"); | |
| 2723 | } else if(xmlnode_get_child(packet, "not-authorized")) { | |
| 2724 | text = _("Not Authorized"); | |
| 2725 | } else if(xmlnode_get_child(packet, "policy-violation")) { | |
| 2726 | text = _("Policy Violation"); | |
| 2727 | } else if(xmlnode_get_child(packet, "remote-connection-failed")) { | |
| 2728 | text = _("Remote Connection Failed"); | |
| 2729 | } else if(xmlnode_get_child(packet, "resource-constraint")) { | |
| 2730 | text = _("Resource Constraint"); | |
| 2731 | } else if(xmlnode_get_child(packet, "restricted-xml")) { | |
| 2732 | text = _("Restricted XML"); | |
| 2733 | } else if(xmlnode_get_child(packet, "see-other-host")) { | |
| 2734 | text = _("See Other Host"); | |
| 2735 | } else if(xmlnode_get_child(packet, "system-shutdown")) { | |
| 2736 | text = _("System Shutdown"); | |
| 2737 | } else if(xmlnode_get_child(packet, "undefined-condition")) { | |
| 2738 | text = _("Undefined Condition"); | |
| 2739 | } else if(xmlnode_get_child(packet, "unsupported-encoding")) { | |
| 2740 | text = _("Unsupported Encoding"); | |
| 2741 | } else if(xmlnode_get_child(packet, "unsupported-stanza-type")) { | |
| 2742 | text = _("Unsupported Stanza Type"); | |
| 2743 | } else if(xmlnode_get_child(packet, "unsupported-version")) { | |
| 2744 | text = _("Unsupported Version"); | |
| 2745 | } else if(xmlnode_get_child(packet, "xml-not-well-formed")) { | |
| 2746 | text = _("XML Not Well Formed"); | |
| 2747 | } else { | |
| 2748 | text = _("Stream Error"); | |
| 2749 | } | |
| 8401 | 2750 | } |
| 2751 | ||
|
21150
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
2752 | #undef SET_REASON |
|
bedd1215fb5e
Stop jabber setting wants_to_die itself. This involved plumbing disconnection
Will Thompson <resiak@pidgin.im>
parents:
20882
diff
changeset
|
2753 | |
| 8401 | 2754 | if(text || cdata) { |
| 2755 | char *ret = g_strdup_printf("%s%s%s", code ? code : "", | |
| 2756 | code ? ": " : "", text ? text : cdata); | |
| 2757 | g_free(cdata); | |
| 2758 | return ret; | |
| 2759 | } else { | |
| 2760 | return NULL; | |
| 2761 | } | |
| 2762 | } | |
| 2763 | ||
| 15884 | 2764 | static PurpleCmdRet jabber_cmd_chat_config(PurpleConversation *conv, |
| 9597 | 2765 | const char *cmd, char **args, char **error, void *data) |
| 9130 | 2766 | { |
| 2767 | 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
|
2768 | |
|
5542a465de12
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents:
18381
diff
changeset
|
2769 | 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
|
2770 | 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
|
2771 | |
| 9130 | 2772 | jabber_chat_request_room_configure(chat); |
| 15884 | 2773 | return PURPLE_CMD_RET_OK; |
| 9130 | 2774 | } |
| 2775 | ||
| 15884 | 2776 | static PurpleCmdRet jabber_cmd_chat_register(PurpleConversation *conv, |
| 9597 | 2777 | const char *cmd, char **args, char **error, void *data) |
| 9130 | 2778 | { |
| 2779 | 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
|
2780 | |
|
5542a465de12
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents:
18381
diff
changeset
|
2781 | 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
|
2782 | 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
|
2783 | |
| 9130 | 2784 | jabber_chat_register(chat); |
| 15884 | 2785 | return PURPLE_CMD_RET_OK; |
| 9130 | 2786 | } |
| 2787 | ||
| 15884 | 2788 | static PurpleCmdRet jabber_cmd_chat_topic(PurpleConversation *conv, |
| 9597 | 2789 | const char *cmd, char **args, char **error, void *data) |
| 9130 | 2790 | { |
| 2791 | 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
|
2792 | |
|
5542a465de12
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents:
18381
diff
changeset
|
2793 | 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
|
2794 | 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
|
2795 | |
|
26859
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2796 | if (args && args[0] && *args[0]) |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2797 | jabber_chat_change_topic(chat, args[0]); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2798 | else { |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2799 | const char *cur = purple_conv_chat_get_topic(PURPLE_CONV_CHAT(conv)); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2800 | char *buf, *tmp, *tmp2; |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2801 | |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2802 | if (cur) { |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2803 | tmp = g_markup_escape_text(cur, -1); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2804 | tmp2 = purple_markup_linkify(tmp); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2805 | buf = g_strdup_printf(_("current topic is: %s"), tmp2); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2806 | g_free(tmp); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2807 | g_free(tmp2); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2808 | } else |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2809 | buf = g_strdup(_("No topic is set")); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2810 | purple_conv_chat_write(PURPLE_CONV_CHAT(conv), "", buf, |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2811 | PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NO_LOG, time(NULL)); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2812 | g_free(buf); |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2813 | } |
|
8175186cf34a
Fix XMPP prpl->set_chat_topic with an empty string (or NULL)
Paul Aurich <darkrain42@pidgin.im>
parents:
26798
diff
changeset
|
2814 | |
| 15884 | 2815 | return PURPLE_CMD_RET_OK; |
| 9130 | 2816 | } |
| 2817 | ||
| 15884 | 2818 | static PurpleCmdRet jabber_cmd_chat_nick(PurpleConversation *conv, |
| 9597 | 2819 | const char *cmd, char **args, char **error, void *data) |
| 9130 | 2820 | { |
| 2821 | JabberChat *chat = jabber_chat_find_by_conv(conv); | |
| 2822 | ||
|
18986
5542a465de12
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents:
18381
diff
changeset
|
2823 | if(!chat || !args || !args[0]) |
| 15884 | 2824 | return PURPLE_CMD_RET_FAILED; |
| 9130 | 2825 | |
|
28734
886d6c5e8f9a
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents:
28702
diff
changeset
|
2826 | if (!jabber_resourceprep_validate(args[0])) { |
|
886d6c5e8f9a
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents:
28702
diff
changeset
|
2827 | *error = g_strdup(_("Invalid nickname")); |
|
886d6c5e8f9a
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents:
28702
diff
changeset
|
2828 | return PURPLE_CMD_RET_FAILED; |
|
886d6c5e8f9a
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents:
28702
diff
changeset
|
2829 | } |
|
886d6c5e8f9a
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents:
28702
diff
changeset
|
2830 | |
|
886d6c5e8f9a
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents:
28702
diff
changeset
|
2831 | if (jabber_chat_change_nick(chat, args[0])) |
|
886d6c5e8f9a
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents:
28702
diff
changeset
|
2832 | return PURPLE_CMD_RET_OK; |
|
886d6c5e8f9a
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents:
28702
diff
changeset
|
2833 | else |
|
886d6c5e8f9a
jabber: Reject invalid chat nicks in /nick command. Fixes #10532.
Paul Aurich <darkrain42@pidgin.im>
parents:
28702
diff
changeset
|
2834 | return PURPLE_CMD_RET_FAILED; |
| 9130 | 2835 | } |
| 2836 | ||
| 15884 | 2837 | static PurpleCmdRet jabber_cmd_chat_part(PurpleConversation *conv, |
| 9597 | 2838 | const char *cmd, char **args, char **error, void *data) |
| 9130 | 2839 | { |
| 2840 | 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
|
2841 | |
|
5542a465de12
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents:
18381
diff
changeset
|
2842 | 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
|
2843 | 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
|
2844 | |
| 9130 | 2845 | jabber_chat_part(chat, args ? args[0] : NULL); |
| 15884 | 2846 | return PURPLE_CMD_RET_OK; |
| 9130 | 2847 | } |
| 2848 | ||
| 15884 | 2849 | static PurpleCmdRet jabber_cmd_chat_ban(PurpleConversation *conv, |
| 9597 | 2850 | const char *cmd, char **args, char **error, void *data) |
| 9152 | 2851 | { |
| 2852 | JabberChat *chat = jabber_chat_find_by_conv(conv); | |
| 2853 | ||
|
18986
5542a465de12
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents:
18381
diff
changeset
|
2854 | if(!chat || !args || !args[0]) |
| 15884 | 2855 | return PURPLE_CMD_RET_FAILED; |
| 9152 | 2856 | |
| 2857 | if(!jabber_chat_ban_user(chat, args[0], args[1])) { | |
| 2858 | *error = g_strdup_printf(_("Unable to ban user %s"), args[0]); | |
| 15884 | 2859 | return PURPLE_CMD_RET_FAILED; |
| 9152 | 2860 | } |
| 2861 | ||
| 15884 | 2862 | return PURPLE_CMD_RET_OK; |
| 9152 | 2863 | } |
| 2864 | ||
| 15884 | 2865 | static PurpleCmdRet jabber_cmd_chat_affiliate(PurpleConversation *conv, |
| 11393 | 2866 | const char *cmd, char **args, char **error, void *data) |
| 2867 | { | |
| 2868 | JabberChat *chat = jabber_chat_find_by_conv(conv); | |
| 2869 | ||
|
27027
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2870 | if (!chat || !args || !args[0]) |
| 15884 | 2871 | return PURPLE_CMD_RET_FAILED; |
| 11393 | 2872 | |
|
27027
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2873 | if (strcmp(args[0], "owner") != 0 && |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2874 | strcmp(args[0], "admin") != 0 && |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2875 | strcmp(args[0], "member") != 0 && |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2876 | strcmp(args[0], "outcast") != 0 && |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2877 | strcmp(args[0], "none") != 0) { |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2878 | *error = g_strdup_printf(_("Unknown affiliation: \"%s\""), args[0]); |
| 15884 | 2879 | return PURPLE_CMD_RET_FAILED; |
| 11393 | 2880 | } |
| 2881 | ||
|
27027
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2882 | if (args[1]) { |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2883 | int i; |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2884 | char **nicks = g_strsplit(args[1], " ", -1); |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2885 | |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2886 | for (i = 0; nicks[i]; ++i) |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2887 | if (!jabber_chat_affiliate_user(chat, nicks[i], args[0])) { |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2888 | *error = g_strdup_printf(_("Unable to affiliate user %s as \"%s\""), nicks[i], args[0]); |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2889 | g_strfreev(nicks); |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2890 | return PURPLE_CMD_RET_FAILED; |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2891 | } |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2892 | |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2893 | g_strfreev(nicks); |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2894 | } else { |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2895 | jabber_chat_affiliation_list(chat, args[0]); |
| 11393 | 2896 | } |
| 2897 | ||
| 15884 | 2898 | return PURPLE_CMD_RET_OK; |
| 11393 | 2899 | } |
| 2900 | ||
| 15884 | 2901 | static PurpleCmdRet jabber_cmd_chat_role(PurpleConversation *conv, |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
2902 | const char *cmd, char **args, char **error, void *data) |
|
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
2903 | { |
|
19217
ee1aa7e4c462
Fix uninitialized variable access.
Daniel Atallah <datallah@pidgin.im>
parents:
18986
diff
changeset
|
2904 | JabberChat *chat = jabber_chat_find_by_conv(conv); |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
2905 | |
|
27027
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2906 | if (!chat || !args || !args[0]) |
| 15884 | 2907 | return PURPLE_CMD_RET_FAILED; |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
2908 | |
|
27027
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2909 | if (strcmp(args[0], "moderator") != 0 && |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2910 | strcmp(args[0], "participant") != 0 && |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2911 | strcmp(args[0], "visitor") != 0 && |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2912 | strcmp(args[0], "none") != 0) { |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2913 | *error = g_strdup_printf(_("Unknown role: \"%s\""), args[0]); |
| 15884 | 2914 | return PURPLE_CMD_RET_FAILED; |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
2915 | } |
|
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
2916 | |
|
27027
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2917 | if (args[1]) { |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2918 | int i; |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2919 | char **nicks = g_strsplit(args[1], " ", -1); |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2920 | |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2921 | for (i = 0; nicks[i]; i++) |
|
29400
8d8ad40c9c7d
jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <darkrain42@pidgin.im>
parents:
29398
diff
changeset
|
2922 | if (!jabber_chat_role_user(chat, nicks[i], args[0], NULL)) { |
|
27027
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2923 | *error = g_strdup_printf(_("Unable to set role \"%s\" for user: %s"), |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2924 | args[0], nicks[i]); |
|
29398
3c31c5db18e9
jabber: Possible leaks--;
Paul Aurich <darkrain42@pidgin.im>
parents:
29370
diff
changeset
|
2925 | g_strfreev(nicks); |
|
27027
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2926 | return PURPLE_CMD_RET_FAILED; |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2927 | } |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2928 | |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2929 | g_strfreev(nicks); |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2930 | } else { |
|
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
2931 | jabber_chat_role_list(chat, args[0]); |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
2932 | } |
| 15884 | 2933 | return PURPLE_CMD_RET_OK; |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
2934 | } |
|
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
2935 | |
| 15884 | 2936 | static PurpleCmdRet jabber_cmd_chat_invite(PurpleConversation *conv, |
| 9597 | 2937 | const char *cmd, char **args, char **error, void *data) |
| 9152 | 2938 | { |
| 2939 | if(!args || !args[0]) | |
| 15884 | 2940 | return PURPLE_CMD_RET_FAILED; |
| 9152 | 2941 | |
| 15884 | 2942 | jabber_chat_invite(purple_conversation_get_gc(conv), |
| 2943 | purple_conv_chat_get_id(PURPLE_CONV_CHAT(conv)), args[1] ? args[1] : "", | |
| 9152 | 2944 | args[0]); |
| 2945 | ||
| 15884 | 2946 | return PURPLE_CMD_RET_OK; |
| 9152 | 2947 | } |
| 2948 | ||
| 15884 | 2949 | static PurpleCmdRet jabber_cmd_chat_join(PurpleConversation *conv, |
| 9597 | 2950 | const char *cmd, char **args, char **error, void *data) |
| 9152 | 2951 | { |
| 2952 | JabberChat *chat = jabber_chat_find_by_conv(conv); | |
| 2953 | GHashTable *components; | |
| 2954 | ||
|
18986
5542a465de12
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents:
18381
diff
changeset
|
2955 | if(!chat || !args || !args[0]) |
| 15884 | 2956 | return PURPLE_CMD_RET_FAILED; |
| 9152 | 2957 | |
| 2958 | components = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL); | |
| 2959 | ||
| 2960 | g_hash_table_replace(components, "room", args[0]); | |
| 2961 | g_hash_table_replace(components, "server", chat->server); | |
| 2962 | g_hash_table_replace(components, "handle", chat->handle); | |
| 2963 | if(args[1]) | |
| 2964 | g_hash_table_replace(components, "password", args[1]); | |
| 2965 | ||
| 15884 | 2966 | jabber_chat_join(purple_conversation_get_gc(conv), components); |
| 9152 | 2967 | |
| 2968 | g_hash_table_destroy(components); | |
| 15884 | 2969 | return PURPLE_CMD_RET_OK; |
| 9152 | 2970 | } |
| 2971 | ||
| 15884 | 2972 | static PurpleCmdRet jabber_cmd_chat_kick(PurpleConversation *conv, |
| 9597 | 2973 | const char *cmd, char **args, char **error, void *data) |
| 9152 | 2974 | { |
| 2975 | JabberChat *chat = jabber_chat_find_by_conv(conv); | |
| 2976 | ||
|
18986
5542a465de12
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents:
18381
diff
changeset
|
2977 | if(!chat || !args || !args[0]) |
| 15884 | 2978 | return PURPLE_CMD_RET_FAILED; |
| 9152 | 2979 | |
|
29400
8d8ad40c9c7d
jabber: Kick by in-room nick, not JID. Reduces code, but is still in-spec (and seems to be the preferred method)
Paul Aurich <darkrain42@pidgin.im>
parents:
29398
diff
changeset
|
2980 | if(!jabber_chat_role_user(chat, args[0], "none", args[1])) { |
| 9152 | 2981 | *error = g_strdup_printf(_("Unable to kick user %s"), args[0]); |
| 15884 | 2982 | return PURPLE_CMD_RET_FAILED; |
| 9152 | 2983 | } |
| 2984 | ||
| 15884 | 2985 | return PURPLE_CMD_RET_OK; |
| 9152 | 2986 | } |
| 2987 | ||
| 15884 | 2988 | static PurpleCmdRet jabber_cmd_chat_msg(PurpleConversation *conv, |
| 9597 | 2989 | const char *cmd, char **args, char **error, void *data) |
| 9152 | 2990 | { |
| 2991 | JabberChat *chat = jabber_chat_find_by_conv(conv); | |
| 2992 | char *who; | |
| 2993 | ||
|
18986
5542a465de12
Fix a bunch of possible crashes in jabber when using slash commands in
Mark Doliner <markdoliner@pidgin.im>
parents:
18381
diff
changeset
|
2994 | 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
|
2995 | 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
|
2996 | |
| 9152 | 2997 | who = g_strdup_printf("%s@%s/%s", chat->room, chat->server, args[0]); |
| 2998 | ||
| 15884 | 2999 | jabber_message_send_im(purple_conversation_get_gc(conv), who, args[1], 0); |
| 9152 | 3000 | |
| 3001 | g_free(who); | |
| 15884 | 3002 | return PURPLE_CMD_RET_OK; |
| 9152 | 3003 | } |
| 3004 | ||
|
17769
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3005 | 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
|
3006 | 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
|
3007 | { |
|
26089
804e625addbc
Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents:
26088
diff
changeset
|
3008 | PurpleAccount *account; |
|
804e625addbc
Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents:
26088
diff
changeset
|
3009 | PurpleConnection *pc; |
|
804e625addbc
Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents:
26088
diff
changeset
|
3010 | |
|
17769
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3011 | if(!args || !args[0]) |
|
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3012 | return PURPLE_CMD_RET_FAILED; |
|
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3013 | |
|
26089
804e625addbc
Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents:
26088
diff
changeset
|
3014 | account = purple_conversation_get_account(conv); |
|
804e625addbc
Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents:
26088
diff
changeset
|
3015 | pc = purple_account_get_connection(account); |
|
804e625addbc
Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents:
26088
diff
changeset
|
3016 | |
|
804e625addbc
Fix merge (i.e. reapply my changes here).
Paul Aurich <darkrain42@pidgin.im>
parents:
26088
diff
changeset
|
3017 | if(!jabber_ping_jid(purple_connection_get_protocol_data(pc), args[0])) { |
|
17769
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3018 | *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
|
3019 | return PURPLE_CMD_RET_FAILED; |
|
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3020 | } |
|
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3021 | |
|
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3022 | return PURPLE_CMD_RET_OK; |
|
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3023 | } |
|
69d98a4da006
applied patch for supporting XEP-0199: XMPP Ping
Andreas Monitzer <am@adiumx.com>
parents:
17768
diff
changeset
|
3024 | |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3025 | 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
|
3026 | |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3027 | JabberBuddy *jb; |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3028 | JabberBuddyResource *jbr; |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3029 | PurpleConnection *gc = js->gc; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
3030 | PurpleBuddy *buddy = |
|
25975
fcd84c6c9909
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents:
25973
diff
changeset
|
3031 | purple_find_buddy(purple_connection_get_account(gc), username); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
3032 | const gchar *alias = |
|
25975
fcd84c6c9909
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents:
25973
diff
changeset
|
3033 | buddy ? purple_buddy_get_contact_alias(buddy) : username; |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3034 | |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3035 | if(!username) |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3036 | return FALSE; |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3037 | |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3038 | 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
|
3039 | if(!jb) { |
|
25975
fcd84c6c9909
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents:
25973
diff
changeset
|
3040 | *error = g_strdup_printf(_("Unable to buzz, because there is nothing " |
|
fcd84c6c9909
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents:
25973
diff
changeset
|
3041 | "known about %s."), alias); |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3042 | return FALSE; |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3043 | } |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3044 | |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3045 | jbr = jabber_buddy_find_resource(jb, NULL); |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3046 | if (!jbr) { |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
3047 | *error = g_strdup_printf(_("Unable to buzz, because %s might be offline."), |
|
25975
fcd84c6c9909
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents:
25973
diff
changeset
|
3048 | alias); |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3049 | return FALSE; |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3050 | } |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3051 | |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3052 | if (jabber_resource_has_capability(jbr, NS_ATTENTION)) { |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3053 | xmlnode *buzz, *msg = xmlnode_new("message"); |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3054 | gchar *to; |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
3055 | |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3056 | to = g_strdup_printf("%s/%s", username, jbr->name); |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3057 | xmlnode_set_attrib(msg, "to", to); |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3058 | g_free(to); |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3059 | |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3060 | /* avoid offline storage */ |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3061 | xmlnode_set_attrib(msg, "type", "headline"); |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3062 | |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3063 | buzz = xmlnode_new_child(msg, "attention"); |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3064 | xmlnode_set_namespace(buzz, NS_ATTENTION); |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3065 | |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3066 | jabber_send(js, msg); |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3067 | xmlnode_free(msg); |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3068 | |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3069 | return TRUE; |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3070 | } else { |
|
25975
fcd84c6c9909
Print alias (if known) in some error/info messages when failing to buzz
Marcus Lundblad <malu@pidgin.im>
parents:
25973
diff
changeset
|
3071 | *error = g_strdup_printf(_("Unable to buzz, because %s does " |
|
26086
f26f6451c701
Use "does" here sounds more natural to me
Mark Doliner <markdoliner@pidgin.im>
parents:
26042
diff
changeset
|
3072 | "not support it or does not wish to receive buzzes now."), alias); |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3073 | return FALSE; |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3074 | } |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3075 | } |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3076 | |
|
17822
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
3077 | static PurpleCmdRet jabber_cmd_buzz(PurpleConversation *conv, |
|
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
3078 | const char *cmd, char **args, char **error, void *data) |
|
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
3079 | { |
|
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
3080 | JabberStream *js = conv->account->gc->proto_data; |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3081 | const gchar *who; |
|
26048
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3082 | gchar *description; |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3083 | PurpleBuddy *buddy; |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3084 | const char *alias; |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3085 | PurpleAttentionType *attn = |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3086 | purple_get_attention_type_from_code(conv->account, 0); |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
3087 | |
|
24428
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3088 | if (!args || !args[0]) { |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3089 | /* use the buddy from conversation, if it's a one-to-one conversation */ |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3090 | if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3091 | who = purple_conversation_get_name(conv); |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3092 | } else { |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3093 | return PURPLE_CMD_RET_FAILED; |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3094 | } |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3095 | } else { |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3096 | who = args[0]; |
|
002e089bfb28
Allow the /buzz command without argument (sends attention to the JID of the
Marcus Lundblad <malu@pidgin.im>
parents:
24397
diff
changeset
|
3097 | } |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
3098 | |
|
26048
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3099 | buddy = purple_find_buddy(conv->account, who); |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3100 | if (buddy != NULL) |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3101 | alias = purple_buddy_get_contact_alias(buddy); |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3102 | else |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3103 | alias = who; |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3104 | |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3105 | description = |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3106 | g_strdup_printf(purple_attention_type_get_outgoing_desc(attn), alias); |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3107 | purple_conversation_write(conv, NULL, description, |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3108 | PURPLE_MESSAGE_NOTIFY | PURPLE_MESSAGE_SYSTEM, time(NULL)); |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3109 | g_free(description); |
|
9eeed41d0004
Make it work again after the merge from i.p.p.... :)
Marcus Lundblad <malu@pidgin.im>
parents:
25948
diff
changeset
|
3110 | return _jabber_send_buzz(js, who, error) ? PURPLE_CMD_RET_OK : PURPLE_CMD_RET_FAILED; |
|
17822
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
3111 | } |
|
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
3112 | |
|
20401
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3113 | 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
|
3114 | { |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3115 | 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
|
3116 | |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3117 | if (!types) { |
|
22225
6cd802a8c5ad
This adds accessor and mutator API for the PurpleAttentionType struct.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
22155
diff
changeset
|
3118 | 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
|
3119 | _("%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
|
3120 | } |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3121 | |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3122 | return types; |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3123 | } |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3124 | |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3125 | 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
|
3126 | { |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3127 | 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
|
3128 | 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
|
3129 | |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3130 | if (!_jabber_send_buzz(js, username, &error)) { |
|
29787
645de6afcc0a
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents:
29771
diff
changeset
|
3131 | PurpleAccount *account = purple_connection_get_account(gc); |
|
645de6afcc0a
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents:
29771
diff
changeset
|
3132 | PurpleConversation *conv = |
|
645de6afcc0a
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents:
29771
diff
changeset
|
3133 | purple_find_conversation_with_account(PURPLE_CONV_TYPE_ANY, username, account); |
|
20401
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3134 | purple_debug_error("jabber", "jabber_send_attention: jabber_cmd_buzz failed with error: %s\n", error ? error : "(NULL)"); |
|
29787
645de6afcc0a
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents:
29771
diff
changeset
|
3135 | |
|
645de6afcc0a
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents:
29771
diff
changeset
|
3136 | if (conv) { |
|
645de6afcc0a
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents:
29771
diff
changeset
|
3137 | purple_conversation_write(conv, username, error, PURPLE_MESSAGE_ERROR, |
|
645de6afcc0a
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents:
29771
diff
changeset
|
3138 | time(NULL)); |
|
645de6afcc0a
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents:
29771
diff
changeset
|
3139 | } |
|
645de6afcc0a
jabber: Print an error message to the current conversation when failing to
Marcus Lundblad <malu@pidgin.im>
parents:
29771
diff
changeset
|
3140 | |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3141 | 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
|
3142 | return FALSE; |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3143 | } |
|
20930
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3144 | |
|
bb8c78265f58
Fix CID 337, null pointer deref. Also plug a leak.
Daniel Atallah <datallah@pidgin.im>
parents:
20929
diff
changeset
|
3145 | return TRUE; |
|
20401
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3146 | } |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3147 | |
|
8aaa593a6269
Comment a partial implementation of the libpurple attention API for
Jeff Connelly <jeff2@soc.pidgin.im>
parents:
20332
diff
changeset
|
3148 | |
|
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
|
3149 | gboolean jabber_offline_message(const PurpleBuddy *buddy) |
|
12645
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12600
diff
changeset
|
3150 | { |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12600
diff
changeset
|
3151 | return TRUE; |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12600
diff
changeset
|
3152 | } |
|
a907ba243930
[gaim-migrate @ 14983]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
12600
diff
changeset
|
3153 | |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3154 | #ifdef USE_VV |
|
26668
ef06285f3b64
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents:
26666
diff
changeset
|
3155 | gboolean |
|
ef06285f3b64
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents:
26666
diff
changeset
|
3156 | jabber_audio_enabled(JabberStream *js, const char *namespace) |
|
26665
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3157 | { |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3158 | PurpleMediaManager *manager = purple_media_manager_get(); |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3159 | PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager); |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3160 | |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3161 | return (caps & (PURPLE_MEDIA_CAPS_AUDIO | PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION)); |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3162 | } |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3163 | |
|
27202
5244a5510e0e
Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents:
27193
diff
changeset
|
3164 | gboolean |
|
26668
ef06285f3b64
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents:
26666
diff
changeset
|
3165 | jabber_video_enabled(JabberStream *js, const char *namespace) |
|
26665
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3166 | { |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3167 | PurpleMediaManager *manager = purple_media_manager_get(); |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3168 | PurpleMediaCaps caps = purple_media_manager_get_ui_caps(manager); |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3169 | |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3170 | return (caps & (PURPLE_MEDIA_CAPS_VIDEO | PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION)); |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3171 | } |
|
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3172 | |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3173 | typedef struct { |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3174 | PurpleAccount *account; |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3175 | gchar *who; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3176 | PurpleMediaSessionType type; |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
3177 | |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3178 | } JabberMediaRequest; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3179 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3180 | static void |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3181 | jabber_media_cancel_cb(JabberMediaRequest *request, |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3182 | PurpleRequestFields *fields) |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3183 | { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3184 | g_free(request->who); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3185 | g_free(request); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3186 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3187 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3188 | static void |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3189 | jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestFields *fields) |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3190 | { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3191 | PurpleRequestField *field = |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3192 | purple_request_fields_get_field(fields, "resource"); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3193 | int selected_id = purple_request_field_choice_get_value(field); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3194 | GList *labels = purple_request_field_choice_get_labels(field); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3195 | gchar *who = g_strdup_printf("%s/%s", request->who, |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3196 | (gchar*)g_list_nth_data(labels, selected_id)); |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3197 | jabber_initiate_media(request->account, who, request->type); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3198 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3199 | g_free(who); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3200 | g_free(request->who); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3201 | g_free(request); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3202 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3203 | #endif |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3204 | |
|
26495
52846ebe1c7d
Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents:
26455
diff
changeset
|
3205 | gboolean |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
3206 | jabber_initiate_media(PurpleAccount *account, const char *who, |
|
26108
8d0fd2f195aa
Changed PurpleMediaStreamType to PurpleMediaSessionType.
Michael Ruprecht <maiku@pidgin.im>
parents:
26106
diff
changeset
|
3207 | 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
|
3208 | { |
|
26454
94130b583e0b
Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents:
26399
diff
changeset
|
3209 | #ifdef USE_VV |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3210 | JabberStream *js = (JabberStream *) |
|
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3211 | purple_account_get_connection(account)->proto_data; |
|
26205
f20bb7e9e311
Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents:
26186
diff
changeset
|
3212 | JabberBuddy *jb; |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3213 | JabberBuddyResource *jbr = NULL; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3214 | char *resource; |
|
26205
f20bb7e9e311
Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents:
26186
diff
changeset
|
3215 | |
|
f20bb7e9e311
Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents:
26186
diff
changeset
|
3216 | if (!js) { |
|
f20bb7e9e311
Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents:
26186
diff
changeset
|
3217 | purple_debug_error("jabber", |
|
f20bb7e9e311
Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents:
26186
diff
changeset
|
3218 | "jabber_initiate_media: NULL stream\n"); |
|
26495
52846ebe1c7d
Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents:
26455
diff
changeset
|
3219 | return FALSE; |
|
26205
f20bb7e9e311
Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents:
26186
diff
changeset
|
3220 | } |
|
f20bb7e9e311
Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents:
26186
diff
changeset
|
3221 | |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3222 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3223 | if((resource = jabber_get_resource(who)) != NULL) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3224 | /* they've specified a resource, no need to ask or |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3225 | * default or anything, just do it */ |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3226 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3227 | jb = jabber_buddy_find(js, who, FALSE); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3228 | jbr = jabber_buddy_find_resource(jb, resource); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3229 | g_free(resource); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3230 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3231 | if (type & PURPLE_MEDIA_AUDIO && |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3232 | !jabber_resource_has_capability(jbr, |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3233 | JINGLE_APP_RTP_SUPPORT_AUDIO) && |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3234 | jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE)) |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3235 | return jabber_google_session_initiate(js, who, type); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3236 | else |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3237 | return jingle_rtp_initiate_media(js, who, type); |
|
26205
f20bb7e9e311
Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents:
26186
diff
changeset
|
3238 | } |
|
f20bb7e9e311
Support initiating voice calls to GTalk and Gmail.
Michael Ruprecht <maiku@pidgin.im>
parents:
26186
diff
changeset
|
3239 | |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3240 | jb = jabber_buddy_find(js, who, FALSE); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3241 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3242 | if(!jb || !jb->resources) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3243 | /* no resources online, we're trying to initiate with someone |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3244 | * whose presence we're not subscribed to, or |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3245 | * someone who is offline. Let's inform the user */ |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3246 | char *msg; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3247 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3248 | if(!jb) { |
|
26647
89bcc7bce53e
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26643
diff
changeset
|
3249 | msg = g_strdup_printf(_("Unable to initiate media with %s: invalid JID"), who); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3250 | } else if(jb->subscription & JABBER_SUB_TO) { |
|
26647
89bcc7bce53e
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26643
diff
changeset
|
3251 | msg = g_strdup_printf(_("Unable to initiate media with %s: user is not online"), who); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3252 | } else { |
|
26647
89bcc7bce53e
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26643
diff
changeset
|
3253 | msg = g_strdup_printf(_("Unable to initiate media with %s: not subscribed to user presence"), who); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3254 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3255 | |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3256 | purple_notify_error(account, _("Media Initiation Failed"), |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3257 | _("Media Initiation Failed"), msg); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3258 | g_free(msg); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3259 | return FALSE; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3260 | } else if(!jb->resources->next) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3261 | /* only 1 resource online (probably our most common case) |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3262 | * so no need to ask who to initiate with */ |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3263 | gchar *name; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3264 | gboolean result; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3265 | jbr = jb->resources->data; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3266 | name = g_strdup_printf("%s/%s", who, jbr->name); |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3267 | result = jabber_initiate_media(account, name, type); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3268 | g_free(name); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3269 | return result; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3270 | } else { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3271 | /* we've got multiple resources, |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3272 | * we need to pick one to initiate with */ |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3273 | GList *l; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3274 | char *msg; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3275 | PurpleRequestFields *fields; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3276 | PurpleRequestField *field = purple_request_field_choice_new( |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3277 | "resource", _("Resource"), 0); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3278 | PurpleRequestFieldGroup *group; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3279 | JabberMediaRequest *request; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3280 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3281 | for(l = jb->resources; l; l = l->next) |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3282 | { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3283 | JabberBuddyResource *ljbr = l->data; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3284 | PurpleMediaCaps caps; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3285 | gchar *name; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3286 | name = g_strdup_printf("%s/%s", who, ljbr->name); |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3287 | caps = jabber_get_media_caps(account, name); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3288 | g_free(name); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3289 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3290 | if ((type & PURPLE_MEDIA_AUDIO) && |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3291 | (type & PURPLE_MEDIA_VIDEO)) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3292 | if (caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3293 | jbr = ljbr; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3294 | purple_request_field_choice_add( |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3295 | field, jbr->name); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3296 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3297 | } else if (type & (PURPLE_MEDIA_AUDIO) && |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3298 | (caps & PURPLE_MEDIA_CAPS_AUDIO)) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3299 | jbr = ljbr; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3300 | purple_request_field_choice_add( |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3301 | field, jbr->name); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3302 | }else if (type & (PURPLE_MEDIA_VIDEO) && |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3303 | (caps & PURPLE_MEDIA_CAPS_VIDEO)) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3304 | jbr = ljbr; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3305 | purple_request_field_choice_add( |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3306 | field, jbr->name); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3307 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3308 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3309 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3310 | if (jbr == NULL) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3311 | purple_debug_error("jabber", |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3312 | "No resources available\n"); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3313 | return FALSE; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3314 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3315 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3316 | if (g_list_length(purple_request_field_choice_get_labels( |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3317 | field)) <= 1) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3318 | gchar *name; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3319 | gboolean result; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3320 | purple_request_field_destroy(field); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3321 | name = g_strdup_printf("%s/%s", who, jbr->name); |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3322 | result = jabber_initiate_media(account, name, type); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3323 | g_free(name); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3324 | return result; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3325 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3326 | |
|
26647
89bcc7bce53e
Minor grammatical message fixes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26643
diff
changeset
|
3327 | msg = g_strdup_printf(_("Please select the resource of %s with which you would like to start a media session."), who); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3328 | fields = purple_request_fields_new(); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3329 | group = purple_request_field_group_new(NULL); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3330 | request = g_new0(JabberMediaRequest, 1); |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3331 | request->account = account; |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3332 | request->who = g_strdup(who); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3333 | request->type = type; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3334 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3335 | purple_request_field_group_add_field(group, field); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3336 | purple_request_fields_add_group(fields, group); |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3337 | purple_request_fields(account, _("Select a Resource"), msg, |
|
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3338 | NULL, fields, _("Initiate Media"), |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3339 | G_CALLBACK(jabber_media_ok_cb), _("Cancel"), |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3340 | G_CALLBACK(jabber_media_cancel_cb), |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3341 | account, who, NULL, request); |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3342 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3343 | g_free(msg); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3344 | return TRUE; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3345 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3346 | #endif |
|
26495
52846ebe1c7d
Don't assume a PurpleMedia instance will be created immediately.
Michael Ruprecht <maiku@pidgin.im>
parents:
26455
diff
changeset
|
3347 | 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
|
3348 | } |
|
e286d795c5f9
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22646
diff
changeset
|
3349 | |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3350 | PurpleMediaCaps jabber_get_media_caps(PurpleAccount *account, const char *who) |
|
22648
e286d795c5f9
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22646
diff
changeset
|
3351 | { |
|
26454
94130b583e0b
Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents:
26399
diff
changeset
|
3352 | #ifdef USE_VV |
|
26746
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3353 | JabberStream *js = (JabberStream *) |
|
2a2d45ac9774
Switch media to store accounts rather than connections.
Michael Ruprecht <maiku@pidgin.im>
parents:
26699
diff
changeset
|
3354 | purple_account_get_connection(account)->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
|
3355 | JabberBuddy *jb; |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3356 | JabberBuddyResource *jbr; |
|
29345
5932dfc04845
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29344
diff
changeset
|
3357 | PurpleMediaCaps total = PURPLE_MEDIA_CAPS_NONE; |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3358 | gchar *resource; |
|
29344
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3359 | GList *specific = NULL, *l; |
|
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
|
3360 | |
|
0844f5e9ac8e
Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents:
23714
diff
changeset
|
3361 | if (!js) { |
|
26632
e4fb60cb05a7
Demote debug error to info.
Michael Ruprecht <maiku@pidgin.im>
parents:
26495
diff
changeset
|
3362 | purple_debug_info("jabber", |
|
e4fb60cb05a7
Demote debug error to info.
Michael Ruprecht <maiku@pidgin.im>
parents:
26495
diff
changeset
|
3363 | "jabber_can_do_media: NULL stream\n"); |
|
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
|
3364 | 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
|
3365 | } |
|
0844f5e9ac8e
Fix crash bug when checking if a contact can do media when logging out.
Michael Ruprecht <maiku@pidgin.im>
parents:
23714
diff
changeset
|
3366 | |
|
29344
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3367 | jb = jabber_buddy_find(js, who, FALSE); |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3368 | |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3369 | if (!jb || !jb->resources) { |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3370 | /* no resources online, we're trying to get caps for someone |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3371 | * whose presence we're not subscribed to, or |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3372 | * someone who is offline. */ |
|
29345
5932dfc04845
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29344
diff
changeset
|
3373 | return total; |
|
29344
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3374 | |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3375 | } else if ((resource = jabber_get_resource(who)) != NULL) { |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3376 | /* they've specified a resource, no need to ask or |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3377 | * default or anything, just do it */ |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3378 | jbr = jabber_buddy_find_resource(jb, resource); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3379 | g_free(resource); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3380 | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3381 | if (!jbr) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3382 | purple_debug_error("jabber", "jabber_get_media_caps:" |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3383 | " Can't find resource %s\n", who); |
|
29345
5932dfc04845
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29344
diff
changeset
|
3384 | return total; |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3385 | } |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3386 | |
|
29344
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3387 | l = specific = g_list_prepend(specific, jbr); |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3388 | |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3389 | } else { |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3390 | /* we've got multiple resources, combine their caps */ |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3391 | l = jb->resources; |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3392 | } |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3393 | |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3394 | for (; l; l = l->next) { |
|
29345
5932dfc04845
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29344
diff
changeset
|
3395 | PurpleMediaCaps caps = PURPLE_MEDIA_CAPS_NONE; |
|
29344
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3396 | jbr = l->data; |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3397 | |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3398 | if (jabber_resource_has_capability(jbr, |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3399 | JINGLE_APP_RTP_SUPPORT_AUDIO)) |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3400 | caps |= PURPLE_MEDIA_CAPS_AUDIO_SINGLE_DIRECTION | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3401 | PURPLE_MEDIA_CAPS_AUDIO; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3402 | if (jabber_resource_has_capability(jbr, |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3403 | JINGLE_APP_RTP_SUPPORT_VIDEO)) |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3404 | caps |= PURPLE_MEDIA_CAPS_VIDEO_SINGLE_DIRECTION | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3405 | PURPLE_MEDIA_CAPS_VIDEO; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3406 | if (caps & PURPLE_MEDIA_CAPS_AUDIO && caps & |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3407 | PURPLE_MEDIA_CAPS_VIDEO) |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3408 | caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3409 | if (caps != PURPLE_MEDIA_CAPS_NONE) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3410 | if (!jabber_resource_has_capability(jbr, |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3411 | JINGLE_TRANSPORT_ICEUDP) && |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3412 | !jabber_resource_has_capability(jbr, |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3413 | JINGLE_TRANSPORT_RAWUDP)) { |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3414 | purple_debug_info("jingle-rtp", "Buddy doesn't " |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3415 | "support the same transport types\n"); |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3416 | caps = PURPLE_MEDIA_CAPS_NONE; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3417 | } else |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3418 | caps |= PURPLE_MEDIA_CAPS_MODIFY_SESSION | |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3419 | PURPLE_MEDIA_CAPS_CHANGE_DIRECTION; |
|
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3420 | } |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3421 | if (jabber_resource_has_capability(jbr, NS_GOOGLE_VOICE)) { |
|
26643
401d7a92ecb1
Add a resource selector when initiating media.
Michael Ruprecht <maiku@pidgin.im>
parents:
26632
diff
changeset
|
3422 | caps |= PURPLE_MEDIA_CAPS_AUDIO; |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3423 | if (jabber_resource_has_capability(jbr, NS_GOOGLE_VIDEO)) |
|
27202
5244a5510e0e
Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents:
27193
diff
changeset
|
3424 | caps |= PURPLE_MEDIA_CAPS_AUDIO_VIDEO; |
|
5244a5510e0e
Add Gmail video support.
Michael Ruprecht <maiku@pidgin.im>
parents:
27193
diff
changeset
|
3425 | } |
|
29345
5932dfc04845
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29344
diff
changeset
|
3426 | |
|
5932dfc04845
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29344
diff
changeset
|
3427 | total |= caps; |
|
23714
a08cf0090382
Check remote JID's capabilities for audio and video XEP support.
Michael Ruprecht <maiku@pidgin.im>
parents:
23712
diff
changeset
|
3428 | } |
|
26170
829055c78478
Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents:
26167
diff
changeset
|
3429 | |
|
29344
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3430 | if (specific) { |
|
362c4882de89
Fix jabber_get_media_caps for buddies with a single resource that has no
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29264
diff
changeset
|
3431 | g_list_free(specific); |
|
26170
829055c78478
Choose the transport type according to the responder's caps.
Michael Ruprecht <maiku@pidgin.im>
parents:
26167
diff
changeset
|
3432 | } |
|
26316
950c0d491c0d
Change purple_prpl_can_do_media to purple_prpl_get_media_caps.
Michael Ruprecht <maiku@pidgin.im>
parents:
26292
diff
changeset
|
3433 | |
|
29345
5932dfc04845
Oops, just realized that caps can be reset in certain situations, and we
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
29344
diff
changeset
|
3434 | return total; |
|
26454
94130b583e0b
Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents:
26399
diff
changeset
|
3435 | #else |
|
94130b583e0b
Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents:
26399
diff
changeset
|
3436 | return PURPLE_MEDIA_CAPS_NONE; |
|
94130b583e0b
Clean up usage of USE_VV in the XMPP protocol.
Michael Ruprecht <maiku@pidgin.im>
parents:
26399
diff
changeset
|
3437 | #endif |
|
22648
e286d795c5f9
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22646
diff
changeset
|
3438 | } |
|
e286d795c5f9
Patch from Marcus Lundblad ('mlundblad') to improve audio support in xmpp.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
22646
diff
changeset
|
3439 | |
|
28879
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3440 | gboolean jabber_can_receive_file(PurpleConnection *gc, const char *who) |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3441 | { |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3442 | JabberStream *js = gc->proto_data; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3443 | |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3444 | if (js) { |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3445 | JabberBuddy *jb = jabber_buddy_find(js, who, FALSE); |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3446 | GList *iter; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3447 | gboolean has_resources_without_caps = FALSE; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3448 | |
|
28928
7c6adca0766f
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents:
28879
diff
changeset
|
3449 | /* if we didn't find a JabberBuddy, we don't have presence for this |
|
7c6adca0766f
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents:
28879
diff
changeset
|
3450 | buddy, let's assume they can receive files, disco should tell us |
|
7c6adca0766f
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents:
28879
diff
changeset
|
3451 | when actually trying */ |
|
7c6adca0766f
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents:
28879
diff
changeset
|
3452 | if (jb == NULL) |
|
7c6adca0766f
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents:
28879
diff
changeset
|
3453 | return TRUE; |
|
7c6adca0766f
jabber: don't crash when right-clicking on buddies non on the local roster
Marcus Lundblad <malu@pidgin.im>
parents:
28879
diff
changeset
|
3454 | |
|
28879
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3455 | /* find out if there is any resources without caps */ |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3456 | for (iter = jb->resources; iter ; iter = g_list_next(iter)) { |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3457 | JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3458 | |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3459 | if (!jabber_resource_know_capabilities(jbr)) { |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3460 | has_resources_without_caps = TRUE; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3461 | } |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3462 | } |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3463 | |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3464 | if (has_resources_without_caps) { |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3465 | /* there is at least one resource which we don't have caps for, |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3466 | let's assume they can receive files... */ |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3467 | return TRUE; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3468 | } else { |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3469 | /* we have caps for all the resources, see if at least one has |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3470 | right caps */ |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3471 | for (iter = jb->resources; iter ; iter = g_list_next(iter)) { |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3472 | JabberBuddyResource *jbr = (JabberBuddyResource *) iter->data; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3473 | |
|
30474
3f649d2041db
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <malu@pidgin.im>
parents:
30458
diff
changeset
|
3474 | if (jabber_resource_has_capability(jbr, NS_SI_FILE_TRANSFER) |
|
28879
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3475 | && (jabber_resource_has_capability(jbr, |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
3476 | NS_BYTESTREAMS) |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3477 | || jabber_resource_has_capability(jbr, NS_IBB))) { |
|
28879
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3478 | return TRUE; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3479 | } |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3480 | } |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3481 | return FALSE; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3482 | } |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3483 | } else { |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3484 | return TRUE; |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3485 | } |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3486 | } |
|
27cc8217e86e
jabber: Determine if a buddy can receive a file transfer (when we have
Marcus Lundblad <malu@pidgin.im>
parents:
28832
diff
changeset
|
3487 | |
|
29843
5caad147921f
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <darkrain42@pidgin.im>
parents:
29827
diff
changeset
|
3488 | static PurpleCmdRet |
|
29827
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3489 | jabber_cmd_mood(PurpleConversation *conv, |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3490 | const char *cmd, char **args, char **error, void *data) |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3491 | { |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3492 | JabberStream *js = conv->account->gc->proto_data; |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3493 | |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3494 | if (js->pep) { |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3495 | /* if no argument was given, unset mood */ |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3496 | if (!args | !args[0]) { |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3497 | jabber_mood_set(js, NULL, NULL); |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3498 | } else if (!args[1]) { |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3499 | jabber_mood_set(js, args[0], NULL); |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3500 | } else { |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3501 | jabber_mood_set(js, args[0], args[1]); |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3502 | } |
|
29843
5caad147921f
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <darkrain42@pidgin.im>
parents:
29827
diff
changeset
|
3503 | |
|
5caad147921f
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <darkrain42@pidgin.im>
parents:
29827
diff
changeset
|
3504 | return PURPLE_CMD_RET_OK; |
|
29827
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3505 | } else { |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3506 | /* account does not support PEP, can't set a mood */ |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3507 | purple_conversation_write(conv, NULL, |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3508 | _("Account does not support PEP, can't set mood"), |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3509 | PURPLE_MESSAGE_ERROR, time(NULL)); |
|
29843
5caad147921f
jabber: Fix the type signature of jabber_cmd_mood
Paul Aurich <darkrain42@pidgin.im>
parents:
29827
diff
changeset
|
3510 | return PURPLE_CMD_RET_FAILED; |
|
29827
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3511 | } |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3512 | } |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3513 | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3514 | static void jabber_register_commands(PurplePlugin *plugin) |
| 9130 | 3515 | { |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3516 | GSList *commands = NULL; |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3517 | PurpleCmdId id; |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3518 | id = purple_cmd_register("config", "", PURPLE_CMD_P_PRPL, |
| 15884 | 3519 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
| 9597 | 3520 | "prpl-jabber", jabber_cmd_chat_config, |
| 3521 | _("config: Configure a chat room."), NULL); | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3522 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3523 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3524 | id = purple_cmd_register("configure", "", PURPLE_CMD_P_PRPL, |
| 15884 | 3525 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
| 9597 | 3526 | "prpl-jabber", jabber_cmd_chat_config, |
| 3527 | _("configure: Configure a chat room."), NULL); | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3528 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3529 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3530 | id = purple_cmd_register("nick", "s", PURPLE_CMD_P_PRPL, |
| 15884 | 3531 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
| 9597 | 3532 | "prpl-jabber", jabber_cmd_chat_nick, |
| 3533 | _("nick <new nickname>: Change your nickname."), | |
| 3534 | NULL); | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3535 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3536 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3537 | id = purple_cmd_register("part", "s", PURPLE_CMD_P_PRPL, |
| 15884 | 3538 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
| 3539 | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
|
28702
245346a2b0a9
jabber: Correct the /part command's help.
Paul Aurich <darkrain42@pidgin.im>
parents:
28656
diff
changeset
|
3540 | jabber_cmd_chat_part, _("part [message]: Leave the room."), |
| 9597 | 3541 | NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3542 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3543 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3544 | id = purple_cmd_register("register", "", PURPLE_CMD_P_PRPL, |
| 15884 | 3545 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
| 9597 | 3546 | "prpl-jabber", jabber_cmd_chat_register, |
| 3547 | _("register: Register with a chat room."), NULL); | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3548 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3549 | |
| 9130 | 3550 | /* XXX: there needs to be a core /topic cmd, methinks */ |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3551 | id = purple_cmd_register("topic", "s", PURPLE_CMD_P_PRPL, |
| 15884 | 3552 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
| 3553 | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
| 9597 | 3554 | jabber_cmd_chat_topic, |
| 3555 | _("topic [new topic]: View or change the topic."), | |
| 3556 | NULL); | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3557 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3558 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3559 | id = purple_cmd_register("ban", "ws", PURPLE_CMD_P_PRPL, |
| 15884 | 3560 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
| 3561 | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
| 9597 | 3562 | jabber_cmd_chat_ban, |
|
22759
1ab25e736b3d
Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents:
22587
diff
changeset
|
3563 | _("ban <user> [reason]: Ban a user from the room."), |
| 9597 | 3564 | NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3565 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3566 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3567 | id = purple_cmd_register("affiliate", "ws", PURPLE_CMD_P_PRPL, |
| 15884 | 3568 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
| 3569 | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
3570 | jabber_cmd_chat_affiliate, |
|
27027
f3129efa65ea
Add ability to list roles/affiliations in a chat via slash-commands and
Paul Aurich <darkrain42@pidgin.im>
parents:
27002
diff
changeset
|
3571 | _("affiliate <owner|admin|member|outcast|none> [nick1] [nick2] ...: Get the users with an affiliation or set users' affiliation with the room."), |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
3572 | NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3573 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3574 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3575 | id = purple_cmd_register("role", "ws", PURPLE_CMD_P_PRPL, |
| 15884 | 3576 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
| 3577 | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
3578 | jabber_cmd_chat_role, |
|
27933
9e7789d3a809
Fix two strings as pointed out on translators@
Paul Aurich <darkrain42@pidgin.im>
parents:
27931
diff
changeset
|
3579 | _("role <moderator|participant|visitor|none> [nick1] [nick2] ...: Get the users with a role or set users' role with the room."), |
|
13238
b98439d90903
[gaim-migrate @ 15603]
Andrej Krivulčík <thefox692@users.sourceforge.net>
parents:
13201
diff
changeset
|
3580 | NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3581 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3582 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3583 | id = purple_cmd_register("invite", "ws", PURPLE_CMD_P_PRPL, |
| 15884 | 3584 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
| 3585 | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
| 9597 | 3586 | jabber_cmd_chat_invite, |
| 11158 | 3587 | _("invite <user> [message]: Invite a user to the room."), |
| 9597 | 3588 | NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3589 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3590 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3591 | id = purple_cmd_register("join", "ws", PURPLE_CMD_P_PRPL, |
| 15884 | 3592 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
| 3593 | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
| 9597 | 3594 | jabber_cmd_chat_join, |
|
22759
1ab25e736b3d
Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents:
22587
diff
changeset
|
3595 | _("join: <room> [password]: Join a chat on this server."), |
| 9597 | 3596 | NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3597 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3598 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3599 | id = purple_cmd_register("kick", "ws", PURPLE_CMD_P_PRPL, |
| 15884 | 3600 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY | |
| 3601 | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, "prpl-jabber", | |
| 9597 | 3602 | jabber_cmd_chat_kick, |
|
22759
1ab25e736b3d
Correct some help strings for Jabber slash commands
Mark Doliner <markdoliner@pidgin.im>
parents:
22587
diff
changeset
|
3603 | _("kick <user> [reason]: Kick a user from the room."), |
| 9597 | 3604 | NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3605 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3606 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3607 | id = purple_cmd_register("msg", "ws", PURPLE_CMD_P_PRPL, |
| 15884 | 3608 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_PRPL_ONLY, |
| 9597 | 3609 | "prpl-jabber", jabber_cmd_chat_msg, |
| 3610 | _("msg <user> <message>: Send a private message to another user."), | |
| 3611 | NULL); | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3612 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3613 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3614 | id = 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
|
3615 | 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
|
3616 | 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
|
3617 | "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
|
3618 | _("ping <jid>: 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
|
3619 | NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3620 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3621 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3622 | id = purple_cmd_register("buzz", "w", PURPLE_CMD_P_PRPL, |
|
26042
4dabdb5fe213
Remove some extra trailing whitespace I noticed after merging mlundblad's
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
26041
diff
changeset
|
3623 | PURPLE_CMD_FLAG_IM | PURPLE_CMD_FLAG_PRPL_ONLY | |
|
24429
31217eabccee
Register the /buzz command using PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS.
Marcus Lundblad <malu@pidgin.im>
parents:
24428
diff
changeset
|
3624 | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, |
|
17822
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
3625 | "prpl-jabber", jabber_cmd_buzz, |
|
1a183f3fa9d7
disapproval of revision 'd52c12703a8e67c41c7f95a2cae7f16ab426ad76'
Andreas Monitzer <am@adiumx.com>
parents:
17821
diff
changeset
|
3626 | _("buzz: Buzz a user to get their attention"), NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3627 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
29827
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3628 | |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3629 | id = purple_cmd_register("mood", "ws", PURPLE_CMD_P_PRPL, |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3630 | PURPLE_CMD_FLAG_CHAT | PURPLE_CMD_FLAG_IM | |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3631 | PURPLE_CMD_FLAG_PRPL_ONLY | PURPLE_CMD_FLAG_ALLOW_WRONG_ARGS, |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3632 | "prpl-jabber", jabber_cmd_mood, |
|
324821bfa1af
jabber: Added a /mood command make up for the lost PurplePluginAction to
Marcus Lundblad <malu@pidgin.im>
parents:
29787
diff
changeset
|
3633 | _("mood: Set current user mood"), NULL); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3634 | commands = g_slist_prepend(commands, GUINT_TO_POINTER(id)); |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3635 | |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3636 | g_hash_table_insert(jabber_cmds, plugin, commands); |
| 9130 | 3637 | } |
| 3638 | ||
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3639 | static void cmds_free_func(gpointer value) |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3640 | { |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3641 | GSList *commands = value; |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3642 | while (commands) { |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3643 | purple_cmd_unregister(GPOINTER_TO_UINT(commands->data)); |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3644 | commands = g_slist_delete_link(commands, commands); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3645 | } |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3646 | } |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3647 | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3648 | static void jabber_unregister_commands(PurplePlugin *plugin) |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3649 | { |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3650 | g_hash_table_remove(jabber_cmds, plugin); |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3651 | } |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3652 | |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3653 | /* IPC functions */ |
|
23598
54fe227bf99e
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23597
diff
changeset
|
3654 | |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3655 | /** |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3656 | * IPC function for determining if a contact supports a certain feature. |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3657 | * |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3658 | * @param account The PurpleAccount |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3659 | * @param jid The full JID of the contact. |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3660 | * @param feature The feature's namespace. |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3661 | * |
|
23598
54fe227bf99e
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23597
diff
changeset
|
3662 | * @return TRUE if supports feature; else FALSE. |
|
54fe227bf99e
* adding documentation for IPC function contact_has_feature
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23597
diff
changeset
|
3663 | */ |
|
23597
ec0bcdfa1da1
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23596
diff
changeset
|
3664 | static gboolean |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3665 | jabber_ipc_contact_has_feature(PurpleAccount *account, const gchar *jid, |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3666 | const gchar *feature) |
|
23597
ec0bcdfa1da1
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23596
diff
changeset
|
3667 | { |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3668 | PurpleConnection *gc = purple_account_get_connection(account); |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3669 | JabberStream *js; |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3670 | JabberBuddy *jb; |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3671 | JabberBuddyResource *jbr; |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3672 | gchar *resource; |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3673 | |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3674 | if (!purple_account_is_connected(account)) |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3675 | return FALSE; |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3676 | js = gc->proto_data; |
|
24721
227944e5d0d6
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents:
24716
diff
changeset
|
3677 | |
|
27155
53502d71efdd
Remove trailing whitespace that has snuck in.
Paul Aurich <darkrain42@pidgin.im>
parents:
27143
diff
changeset
|
3678 | if (!(resource = jabber_get_resource(jid)) || |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3679 | !(jb = jabber_buddy_find(js, jid, FALSE)) || |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3680 | !(jbr = jabber_buddy_find_resource(jb, resource))) { |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3681 | g_free(resource); |
|
24721
227944e5d0d6
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents:
24716
diff
changeset
|
3682 | return FALSE; |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3683 | } |
|
24721
227944e5d0d6
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents:
24716
diff
changeset
|
3684 | |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3685 | g_free(resource); |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3686 | |
|
24802
eb481e98ac6a
Sprinkle jabber_resource_has_capability in places
Paul Aurich <darkrain42@pidgin.im>
parents:
24737
diff
changeset
|
3687 | return jabber_resource_has_capability(jbr, feature); |
|
23596
164fbee281c1
* fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23586
diff
changeset
|
3688 | } |
|
164fbee281c1
* fixing a bug in jabber_caps_compare()
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23586
diff
changeset
|
3689 | |
|
23599
ac402ffdcbec
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23598
diff
changeset
|
3690 | static void |
|
24721
227944e5d0d6
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents:
24716
diff
changeset
|
3691 | jabber_ipc_add_feature(const gchar *feature) |
|
23599
ac402ffdcbec
* removing several warnings
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23598
diff
changeset
|
3692 | { |
|
24721
227944e5d0d6
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents:
24716
diff
changeset
|
3693 | if (!feature) |
|
227944e5d0d6
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents:
24716
diff
changeset
|
3694 | return; |
| 23600 | 3695 | jabber_add_feature(feature, 0); |
|
24721
227944e5d0d6
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents:
24716
diff
changeset
|
3696 | |
|
227944e5d0d6
constify, ifdef out an old-caps remnant, and rewrite a little
Paul Aurich <darkrain42@pidgin.im>
parents:
24716
diff
changeset
|
3697 | /* send presence with new caps info for all connected accounts */ |
|
23601
f7e44345f4b9
* implemented jabber_caps_broadcast_change() and finished jabber_ipc_add_feature() IPC function
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23600
diff
changeset
|
3698 | jabber_caps_broadcast_change(); |
| 9130 | 3699 | } |
| 3700 | ||
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3701 | static void |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3702 | jabber_do_init(void) |
| 14358 | 3703 | { |
|
27286
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3704 | GHashTable *ui_info = purple_core_get_ui_info(); |
|
27293
5234a1fe1531
Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <darkrain42@pidgin.im>
parents:
27292
diff
changeset
|
3705 | const gchar *ui_type; |
|
27756
cc054031e076
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents:
27755
diff
changeset
|
3706 | const gchar *type = "pc"; /* default client type, if unknown or |
|
27286
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3707 | unspecified */ |
|
27756
cc054031e076
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents:
27755
diff
changeset
|
3708 | const gchar *ui_name = NULL; |
|
29847
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3709 | #ifdef HAVE_CYRUS_SASL |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3710 | /* We really really only want to do this once per process */ |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3711 | static gboolean sasl_initialized = FALSE; |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3712 | #ifdef _WIN32 |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3713 | UINT old_error_mode; |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3714 | gchar *sasldir; |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3715 | #endif |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3716 | int ret; |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3717 | #endif |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3718 | |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3719 | /* XXX - If any other plugin wants SASL this won't be good ... */ |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3720 | #ifdef HAVE_CYRUS_SASL |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3721 | if (!sasl_initialized) { |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3722 | sasl_initialized = TRUE; |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3723 | #ifdef _WIN32 |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3724 | sasldir = g_build_filename(wpurple_install_dir(), "sasl2", NULL); |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3725 | sasl_set_path(SASL_PATH_TYPE_PLUGIN, sasldir); |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3726 | g_free(sasldir); |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3727 | /* Suppress error popups for failing to load sasl plugins */ |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3728 | old_error_mode = SetErrorMode(SEM_FAILCRITICALERRORS); |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3729 | #endif |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3730 | if ((ret = sasl_client_init(NULL)) != SASL_OK) { |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3731 | purple_debug_error("xmpp", "Error (%d) initializing SASL.\n", ret); |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3732 | } |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3733 | #ifdef _WIN32 |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3734 | /* Restore the original error mode */ |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3735 | SetErrorMode(old_error_mode); |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3736 | #endif |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3737 | } |
|
c4713809ccce
jabber: Only initialize SASL once, too.
Paul Aurich <darkrain42@pidgin.im>
parents:
29845
diff
changeset
|
3738 | #endif |
|
27286
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3739 | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3740 | jabber_cmds = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, cmds_free_func); |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3741 | |
|
27293
5234a1fe1531
Avoid an assertion when the UI doesn't have a get_ui_info ui_op
Paul Aurich <darkrain42@pidgin.im>
parents:
27292
diff
changeset
|
3742 | ui_type = ui_info ? g_hash_table_lookup(ui_info, "client_type") : NULL; |
|
27286
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3743 | if (ui_type) { |
|
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3744 | if (strcmp(ui_type, "pc") == 0 || |
|
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3745 | strcmp(ui_type, "console") == 0 || |
|
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3746 | strcmp(ui_type, "phone") == 0 || |
|
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3747 | strcmp(ui_type, "handheld") == 0 || |
|
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3748 | strcmp(ui_type, "web") == 0 || |
|
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3749 | strcmp(ui_type, "bot") == 0) { |
|
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3750 | type = ui_type; |
|
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3751 | } |
|
f637c4c27815
Fixup after propagating new caps stuff
Marcus Lundblad <malu@pidgin.im>
parents:
27285
diff
changeset
|
3752 | } |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
3753 | |
|
27756
cc054031e076
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents:
27755
diff
changeset
|
3754 | if (ui_info) |
|
cc054031e076
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents:
27755
diff
changeset
|
3755 | ui_name = g_hash_table_lookup(ui_info, "name"); |
|
cc054031e076
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents:
27755
diff
changeset
|
3756 | if (ui_name == NULL) |
|
cc054031e076
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents:
27755
diff
changeset
|
3757 | ui_name = PACKAGE; |
|
cc054031e076
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents:
27755
diff
changeset
|
3758 | |
|
cc054031e076
Identify clients in XMPP caps based on the ui_info hash. Closes #9672.
Paul Aurich <darkrain42@pidgin.im>
parents:
27755
diff
changeset
|
3759 | jabber_add_identity("client", type, NULL, ui_name); |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
3760 | |
|
23597
ec0bcdfa1da1
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23596
diff
changeset
|
3761 | /* initialize jabber_features list */ |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
3762 | jabber_add_feature(NS_LAST_ACTIVITY, 0); |
|
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
3763 | jabber_add_feature(NS_OOB_IQ_DATA, 0); |
|
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
3764 | jabber_add_feature(NS_ENTITY_TIME, 0); |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
3765 | jabber_add_feature("jabber:iq:version", 0); |
|
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
3766 | jabber_add_feature("jabber:x:conference", 0); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
3767 | jabber_add_feature(NS_BYTESTREAMS, 0); |
|
25798
7fabdc4d3a2b
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <darkrain42@pidgin.im>
parents:
25797
diff
changeset
|
3768 | jabber_add_feature("http://jabber.org/protocol/caps", 0); |
|
7fabdc4d3a2b
Fix advertised capabilities (caps, chatstates, entity time)
Paul Aurich <darkrain42@pidgin.im>
parents:
25797
diff
changeset
|
3769 | jabber_add_feature("http://jabber.org/protocol/chatstates", 0); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
3770 | jabber_add_feature(NS_DISCO_INFO, 0); |
|
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
3771 | jabber_add_feature(NS_DISCO_ITEMS, 0); |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3772 | jabber_add_feature(NS_IBB, 0); |
|
23586
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
3773 | jabber_add_feature("http://jabber.org/protocol/muc", 0); |
|
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
3774 | jabber_add_feature("http://jabber.org/protocol/muc#user", 0); |
|
e495a4623f76
Removing short-names for features and calculating own caps hash.
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23428
diff
changeset
|
3775 | jabber_add_feature("http://jabber.org/protocol/si", 0); |
|
30474
3f649d2041db
jabber: Don't show resources that we know for sure isn't supporting the file
Marcus Lundblad <malu@pidgin.im>
parents:
30458
diff
changeset
|
3776 | jabber_add_feature(NS_SI_FILE_TRANSFER, 0); |
|
28984
1d84517d56eb
jabber: More namespaces! This is a good stopping point for now.
Paul Aurich <darkrain42@pidgin.im>
parents:
28982
diff
changeset
|
3777 | jabber_add_feature(NS_XHTML_IM, 0); |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3778 | jabber_add_feature(NS_PING, 0); |
|
26659
918350344dc7
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents:
26658
diff
changeset
|
3779 | |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3780 | /* Buzz/Attention */ |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3781 | jabber_add_feature(NS_ATTENTION, jabber_buzz_isenabled); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3782 | |
|
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3783 | /* Bits Of Binary */ |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3784 | jabber_add_feature(NS_BOB, 0); |
|
27028
1a2ef7ddb463
Clean up jabber prpl memory allocations on uninit.
Nick Hebner <hebnern@gmail.com>
parents:
27027
diff
changeset
|
3785 | |
|
26659
918350344dc7
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents:
26658
diff
changeset
|
3786 | /* Jingle features! */ |
|
918350344dc7
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents:
26658
diff
changeset
|
3787 | jabber_add_feature(JINGLE, 0); |
|
26666
4c95bdba5627
Advertise ICEUDP only when libnice is available
Paul Aurich <darkrain42@pidgin.im>
parents:
26665
diff
changeset
|
3788 | |
|
26665
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3789 | #ifdef USE_VV |
|
28980
4a0f7340b539
jabber: Add the missing file and fix up the Google session namespaces
Paul Aurich <darkrain42@pidgin.im>
parents:
28979
diff
changeset
|
3790 | jabber_add_feature(NS_GOOGLE_PROTOCOL_SESSION, jabber_audio_enabled); |
|
28979
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3791 | jabber_add_feature(NS_GOOGLE_VOICE, jabber_audio_enabled); |
|
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3792 | jabber_add_feature(NS_GOOGLE_VIDEO, jabber_video_enabled); |
|
191942cc7747
jabber: Start putting all the namespaces in one location with consistent naming.
Paul Aurich <darkrain42@pidgin.im>
parents:
28928
diff
changeset
|
3793 | jabber_add_feature(NS_GOOGLE_CAMERA, jabber_video_enabled); |
|
28561
a2dd00ce03eb
Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <resiak@pidgin.im>
parents:
28379
diff
changeset
|
3794 | jabber_add_feature(JINGLE_APP_RTP, 0); |
|
26668
ef06285f3b64
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents:
26666
diff
changeset
|
3795 | jabber_add_feature(JINGLE_APP_RTP_SUPPORT_AUDIO, jabber_audio_enabled); |
|
ef06285f3b64
Fix allowing gmail user to initiate voice call by advertising a specific ext
Paul Aurich <darkrain42@pidgin.im>
parents:
26666
diff
changeset
|
3796 | jabber_add_feature(JINGLE_APP_RTP_SUPPORT_VIDEO, jabber_video_enabled); |
|
28561
a2dd00ce03eb
Advertise jingle rtp, and only advertise rawudp if VV is enabled
Will Thompson <resiak@pidgin.im>
parents:
28379
diff
changeset
|
3797 | jabber_add_feature(JINGLE_TRANSPORT_RAWUDP, 0); |
|
26960
6ab1af0e17f7
merge of '8482365bb2ecec16d6e7161069a6000c330727e8'
Paul Aurich <darkrain42@pidgin.im>
diff
changeset
|
3798 | jabber_add_feature(JINGLE_TRANSPORT_ICEUDP, 0); |
|
29541
37f0297ff3ad
Rebroadcast XMPP caps whenever the UI caps change.
Michael Ruprecht <maiku@pidgin.im>
parents:
28656
diff
changeset
|
3799 | |
|
37f0297ff3ad
Rebroadcast XMPP caps whenever the UI caps change.
Michael Ruprecht <maiku@pidgin.im>
parents:
28656
diff
changeset
|
3800 | g_signal_connect(G_OBJECT(purple_media_manager_get()), "ui-caps-changed", |
|
37f0297ff3ad
Rebroadcast XMPP caps whenever the UI caps change.
Michael Ruprecht <maiku@pidgin.im>
parents:
28656
diff
changeset
|
3801 | G_CALLBACK(jabber_caps_broadcast_change), NULL); |
|
26665
16f54aa7c7d1
Advertise video/voice features only when the UI says it has those caps
Paul Aurich <darkrain42@pidgin.im>
parents:
26663
diff
changeset
|
3802 | #endif |
|
26659
918350344dc7
Fix merge: Move the Jingle features to jabber.c
Paul Aurich <darkrain42@pidgin.im>
parents:
26658
diff
changeset
|
3803 | |
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3804 | /* reverse order of unload_plugin */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3805 | jabber_iq_init(); |
|
29848
999c0235bbc6
jabber: Heavily refactor jabber_presence_parse(). It's still not short enough.
Paul Aurich <darkrain42@pidgin.im>
parents:
29847
diff
changeset
|
3806 | jabber_presence_init(); |
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3807 | jabber_caps_init(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3808 | /* PEP things should be init via jabber_pep_init, not here */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3809 | jabber_pep_init(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3810 | jabber_data_init(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3811 | jabber_bosh_init(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3812 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3813 | /* TODO: Implement adding and retrieving own features via IPC API */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3814 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3815 | jabber_ibb_init(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3816 | jabber_si_init(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3817 | |
|
28855
c5bc85f9c00e
jabber: Factor the SASL auth methods into their own files.
Paul Aurich <darkrain42@pidgin.im>
parents:
28832
diff
changeset
|
3818 | jabber_auth_init(); |
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3819 | } |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3820 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3821 | static void |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3822 | jabber_do_uninit(void) |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3823 | { |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3824 | /* reverse order of jabber_do_init */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3825 | jabber_bosh_uninit(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3826 | jabber_data_uninit(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3827 | jabber_si_uninit(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3828 | jabber_ibb_uninit(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3829 | /* PEP things should be uninit via jabber_pep_uninit, not here */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3830 | jabber_pep_uninit(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3831 | jabber_caps_uninit(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3832 | jabber_presence_uninit(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3833 | jabber_iq_uninit(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3834 | |
| 30036 | 3835 | #ifdef USE_VV |
| 3836 | g_signal_handlers_disconnect_by_func(G_OBJECT(purple_media_manager_get()), | |
| 3837 | G_CALLBACK(jabber_caps_broadcast_change), NULL); | |
| 3838 | #endif | |
| 3839 | ||
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3840 | jabber_auth_uninit(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3841 | jabber_features_destroy(); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3842 | jabber_identities_destroy(); |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3843 | |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3844 | g_hash_table_destroy(jabber_cmds); |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3845 | jabber_cmds = NULL; |
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3846 | } |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3847 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3848 | void jabber_plugin_init(PurplePlugin *plugin) |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3849 | { |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3850 | ++plugin_ref; |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3851 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3852 | if (plugin_ref == 1) |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3853 | jabber_do_init(); |
|
28855
c5bc85f9c00e
jabber: Factor the SASL auth methods into their own files.
Paul Aurich <darkrain42@pidgin.im>
parents:
28832
diff
changeset
|
3854 | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3855 | jabber_register_commands(plugin); |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3856 | |
|
23597
ec0bcdfa1da1
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23596
diff
changeset
|
3857 | /* IPC functions */ |
|
ec0bcdfa1da1
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23596
diff
changeset
|
3858 | purple_plugin_ipc_register(plugin, "contact_has_feature", PURPLE_CALLBACK(jabber_ipc_contact_has_feature), |
|
24734
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3859 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER, |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3860 | purple_value_new(PURPLE_TYPE_BOOLEAN), 3, |
|
780b8ad67c22
Sprinkle around more support for xml:lang on JabberIdentities
Paul Aurich <darkrain42@pidgin.im>
parents:
24721
diff
changeset
|
3861 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT), |
|
23597
ec0bcdfa1da1
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23596
diff
changeset
|
3862 | purple_value_new(PURPLE_TYPE_STRING), |
|
ec0bcdfa1da1
* adding IPC function 'contact_has_feature'
Tobias Markmann <tfar@soc.pidgin.im>
parents:
23596
diff
changeset
|
3863 | purple_value_new(PURPLE_TYPE_STRING)); |
|
27103
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27028
diff
changeset
|
3864 | |
| 23600 | 3865 | purple_plugin_ipc_register(plugin, "add_feature", PURPLE_CALLBACK(jabber_ipc_add_feature), |
| 3866 | purple_marshal_VOID__POINTER, | |
| 3867 | NULL, 1, | |
| 3868 | purple_value_new(PURPLE_TYPE_STRING)); | |
|
27223
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3869 | |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3870 | purple_plugin_ipc_register(plugin, "register_namespace_watcher", |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3871 | PURPLE_CALLBACK(jabber_iq_signal_register), |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3872 | purple_marshal_VOID__POINTER_POINTER, |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3873 | NULL, 2, |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3874 | purple_value_new(PURPLE_TYPE_STRING), /* node */ |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3875 | purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3876 | |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3877 | purple_plugin_ipc_register(plugin, "unregister_namespace_watcher", |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3878 | PURPLE_CALLBACK(jabber_iq_signal_unregister), |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3879 | purple_marshal_VOID__POINTER_POINTER, |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3880 | NULL, 2, |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3881 | purple_value_new(PURPLE_TYPE_STRING), /* node */ |
|
d41e83f82148
Examples for the namespace-(un)registering of IQs and added IPC versions
Paul Aurich <darkrain42@pidgin.im>
parents:
27221
diff
changeset
|
3882 | purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3883 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3884 | purple_signal_register(plugin, "jabber-register-namespace-watcher", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3885 | purple_marshal_VOID__POINTER_POINTER, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3886 | NULL, 2, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3887 | purple_value_new(PURPLE_TYPE_STRING), /* node */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3888 | purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3889 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3890 | purple_signal_register(plugin, "jabber-unregister-namespace-watcher", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3891 | purple_marshal_VOID__POINTER_POINTER, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3892 | NULL, 2, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3893 | purple_value_new(PURPLE_TYPE_STRING), /* node */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3894 | purple_value_new(PURPLE_TYPE_STRING)); /* namespace */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3895 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3896 | purple_signal_connect(plugin, "jabber-register-namespace-watcher", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3897 | plugin, PURPLE_CALLBACK(jabber_iq_signal_register), NULL); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3898 | purple_signal_connect(plugin, "jabber-unregister-namespace-watcher", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3899 | plugin, PURPLE_CALLBACK(jabber_iq_signal_unregister), NULL); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3900 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3901 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3902 | purple_signal_register(plugin, "jabber-receiving-xmlnode", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3903 | purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3904 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3905 | purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3906 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3907 | purple_signal_register(plugin, "jabber-sending-xmlnode", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3908 | purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3909 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3910 | purple_value_new_outgoing(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3911 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3912 | /* |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3913 | * Do not remove this or the plugin will fail. Completely. You have been |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3914 | * warned! |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3915 | */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3916 | purple_signal_connect_priority(plugin, "jabber-sending-xmlnode", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3917 | plugin, PURPLE_CALLBACK(jabber_send_signal_cb), |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3918 | NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3919 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3920 | purple_signal_register(plugin, "jabber-sending-text", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3921 | purple_marshal_VOID__POINTER_POINTER, NULL, 2, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3922 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3923 | purple_value_new_outgoing(PURPLE_TYPE_STRING)); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3924 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3925 | purple_signal_register(plugin, "jabber-receiving-message", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3926 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER_POINTER, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3927 | purple_value_new(PURPLE_TYPE_BOOLEAN), 6, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3928 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3929 | purple_value_new(PURPLE_TYPE_STRING), /* type */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3930 | purple_value_new(PURPLE_TYPE_STRING), /* id */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3931 | purple_value_new(PURPLE_TYPE_STRING), /* from */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3932 | purple_value_new(PURPLE_TYPE_STRING), /* to */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3933 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3934 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3935 | purple_signal_register(plugin, "jabber-receiving-iq", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3936 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3937 | purple_value_new(PURPLE_TYPE_BOOLEAN), 5, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3938 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3939 | purple_value_new(PURPLE_TYPE_STRING), /* type */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3940 | purple_value_new(PURPLE_TYPE_STRING), /* id */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3941 | purple_value_new(PURPLE_TYPE_STRING), /* from */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3942 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3943 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3944 | purple_signal_register(plugin, "jabber-watched-iq", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3945 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER_POINTER, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3946 | purple_value_new(PURPLE_TYPE_BOOLEAN), 5, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3947 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3948 | purple_value_new(PURPLE_TYPE_STRING), /* type */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3949 | purple_value_new(PURPLE_TYPE_STRING), /* id */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3950 | purple_value_new(PURPLE_TYPE_STRING), /* from */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3951 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); /* child */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3952 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3953 | purple_signal_register(plugin, "jabber-receiving-presence", |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3954 | purple_marshal_BOOLEAN__POINTER_POINTER_POINTER_POINTER, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3955 | purple_value_new(PURPLE_TYPE_BOOLEAN), 4, |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3956 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_CONNECTION), |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3957 | purple_value_new(PURPLE_TYPE_STRING), /* type */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3958 | purple_value_new(PURPLE_TYPE_STRING), /* from */ |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3959 | purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_XMLNODE)); |
| 14358 | 3960 | } |
|
24737
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
3961 | |
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3962 | void jabber_plugin_uninit(PurplePlugin *plugin) |
|
24737
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
3963 | { |
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3964 | g_return_if_fail(plugin_ref > 0); |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3965 | |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3966 | purple_signals_unregister_by_instance(plugin); |
|
28832
4e4b609b85e4
jabber: Use purple_connection_get_prpl() instead of jabber_plugin.
Paul Aurich <darkrain42@pidgin.im>
parents:
28830
diff
changeset
|
3967 | purple_plugin_ipc_unregister_all(plugin); |
|
27103
815af6acd59b
Add jabber signals for IQ, Message, and Presence stanzas. Lightly tested (it doesn't crash [Prove me wrong!]) and as you'll note, I refer to documentation that doesn't yet exist.
Paul Aurich <darkrain42@pidgin.im>
parents:
27028
diff
changeset
|
3968 | |
|
29845
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3969 | jabber_unregister_commands(plugin); |
|
5684cbe452f7
jabber: And fix up the commands now to be per-plugin
Paul Aurich <darkrain42@pidgin.im>
parents:
29844
diff
changeset
|
3970 | |
|
29844
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3971 | --plugin_ref; |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3972 | if (plugin_ref == 0) |
|
6c6e346e1390
jabber: Move the initialization into the jabber plugin, and only initialize some things once.
Paul Aurich <darkrain42@pidgin.im>
parents:
29843
diff
changeset
|
3973 | jabber_do_uninit(); |
|
24737
b8a96a07e7ac
Add more jabber plugin unloading functions to clean up more data structures
Paul Aurich <darkrain42@pidgin.im>
parents:
24735
diff
changeset
|
3974 | } |